请问下:interface Edge1<D>
interface Edge1<D extends PlainObject>
有什么区别?
interface PlainObject {
[key: string]: unknown;
}
interface User {
id: number;
name: string;
email: string;
}
interface Edge1<D> {
id: string;
source: string;
target: string;
data: D;
}
interface Edge2<D extends PlainObject> {
id: string;
source: string;
target: string;
data: D;
}
const edge1: Edge1<User> = {
id: '1',
source: 'user-1',
target: 'user-2',
data: { id: 1, name: 'John', email: 'john@example.com' },
};
const edge2: Edge2<User> = {
id: '2',
source 'user-2',
target: 'user-3',
data: { id: 2, name: 'Tom', email: 'tom@example.com' },
};
你这个例子好像没区别,都是兼容的对象数据类型。
如果写了 D extends PlainObject
在泛型里面,需要传入的类型是它的上层类型。即要包函兼容它才行。
一个没有泛型约束,一个有泛型约束,仅此而已。
后者要求泛型 D 必须是个 PlainObject。所以你不能拿 number、string、boolean 之类的类型用。
type N1 = Edge1<number>; // ok
type N2 = Edge2<number>; // error
我在看最新的开发者IDE: Zed的时候, 发现它有一个标签:gpui 请问gpui是什么? 和 GPU 有关系吗?
本文向大家介绍请问error和exception有什么区别?相关面试题,主要包含被问及请问error和exception有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 考察点:异常 error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。 exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
请问打包和分发的区别是什么? 我在学习Electron的时候,我有看到 electron-builder 是打包工具; electron-forge 是打包/分发工具。 请问打包和分发的区别是什么呢?
请问这2种写法有什么区别?我VSCode运行都是可以运行的。
本文向大家介绍请说明一下sleep() 和 wait() 有什么区别?相关面试题,主要包含被问及请说明一下sleep() 和 wait() 有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 考察点:线程 sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,把执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。 wait是Object类的
请问,next.js 13.4 之后的 useParams, useSearchParams 有什么区别,如何使用的呢?