Javascript 如何根据对象的属性创建接口?

Javascript 如何根据对象的属性创建接口?,javascript,angular,typescript,interface,Javascript,Angular,Typescript,Interface,我正在使用最新的TypeScript和Angular,我有一个对象: const obj: ObjInterface = { prop1: 1, prop2: 2, prop3: '3' } 我还有基于该对象的接口: interface ObjInterface { prop1: number; prop2: number; prop3: string; } 是否可以创建仅由obj的属性组成的数组接口 const array: SomeInterface = ['prop1

我正在使用最新的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

您可以使用
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
接口对象接口{
建议1:数字;
建议2:数字;
prop3:字符串;
}
常量数组:数组=['prop1','prop2','prop3'];//好啊
常量数组2:Array=['prop1','prop2','prop4'];//错误

注意这将是一个编译时错误,在运行时,如果您在类型系统之外冒险或使用类型断言,则可以在数组中使用不同的字符串。

运行时不存在接口