【发布时间】:2018-10-25 23:33:55
【问题描述】:
我想在 TypeScript 中创建一个类,它以一种要求具有该接口的所有属性(甚至是可选属性)的方式实现接口,但允许可选属性为undefined。
这是Required_ish<T> 类型将比Required<T> 更宽,但比T 更严格,因为它需要我明确列出所有属性。然而,相同的值可以分配给Required_ish<T> 和T 的参数。
我试过这个,但它似乎和Required做同样的事情:
type Required_ish<T> = T & { [K in keyof T]-?: T[K] | undefined }
所需的属性:
interface Foo {
a: string;
b?: number;
}
class Bar1 implements Foo { a = ''; } // allowed
class Bar2 implements Required_ish<Foo> { a = ''; } // error
class Bar3 implements Required<Foo> { a = ''; } // error
class Bar4 implements Foo { a = ''; b = undefined; } // allowed
class Bar5 implements Required_ish<Foo> { a = ''; b = undefined; } // allowed
class Bar6 implements Required<Foo> { a = ''; b = undefined; } // error
class Bar7 implements Foo { a = ''; b = 0; } // allowed
class Bar8 implements Required_ish<Foo> { a = ''; b = 0; } // allowed
class Bar9 implements Required<Foo> { a = ''; b = 0; } // allowed
【问题讨论】:
标签: typescript