你可以用
mapped
和
conditional
Omit
:
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>
所以
Omit<T, K>
T
但是在
K
interface
打电话
OriginalLite
只缺一个
link
:
interface OriginalLite extends Omit<Original, 'link'> {}
不延伸
Original
. 这是因为在TypeScript中“extend”的意思是使一个类型更加具体(也就是说“narrowing”),但在你的例子中,你所做的是使它变得不那么具体(也就是说“wirrowing”)。所以这就是为什么
extends Original
不出现在该定义中。我想你没关系。
我们来测试一下:
declare const originalLite: OriginalLite;
originalLite.name; // string
originalLite.size; // number
originalLite.link; // error, property 'link' does not exist on type 'OriginalLite'