为什么这段代码不会抛出任何错误:
interface X {
a: string;
b?: string;
}
type Y<T> = {
[key in keyof T]: boolean;
}
class A<Definition> {
constructor(public readonly definition: Definition, public readonly fields: Y<Definition>) {
}
}
const y = {
a: true,
c: false
}
const a = new A<X>({a: 'first', b: 'second'}, y)
但这会引发错误吗?
interface X {
a: string;
b?: string;
}
type Y<T> = {
[key in keyof T]: boolean;
}
const y: Y<X> = {
a: true,
c: false,
}
我希望有类似于第一个示例的内容会抛出错误,因为c
不是X
的关键字。
如果我在第一个示例中将Y<X>
类型添加到y
,则会出现编译错误。
答案 0 :(得分:0)
您可以尝试使用联合类型使第二个示例代码正常工作:
interface X {
a: string;
b?: string;
}
type Y<T> = {
[key in keyof T]: boolean;
}
type Z = {
c: boolean;
}
const y: Y<X> | Z = {
a: true,
c: false
}