我正在使用最新的TypeScript和Angular,我有一个对象:
const obj: ObjInterface = {
prop1: 1,
prop2: 2,
prop3: '3'
}
我也有基于该对象的界面:
interface ObjInterface {
prop1: number;
prop2: number;
prop3: string;
}
是否可以创建仅由obj
?
const array: SomeInterface = ['prop1', 'prop2', 'prop3']; // OK
const array: SomeInterface = ['prop1', 'prop2', 'prop4']; // error
答案 0 :(得分:1)
您可以使用keyof
运算符
interface ObjInterface {
prop1: number;
prop2: number;
prop3: string;
}
const array: Array<keyof ObjInterface> = ['prop1', 'prop2', 'prop3']; // OK
const array2: Array<keyof ObjInterface> = ['prop1', 'prop2', 'prop4']; // error
注意这将是一个编译时错误,在运行时,如果您在类型系统之外冒险或者使用类型断言,则可以在数组中使用不同的字符串。