【发布时间】:2018-01-18 08:20:01
【问题描述】:
我需要强制一个数组具有一组特定的值,这些值应该是我界面的键。 我可以用
强制数组type SomeProperties = ['prop1', 'prop2', 'prop3'];
但我不知道如何强制接口具有这些属性。我尝试了类似的东西
type MyInterface = {
[key in keyof SomeProperties]: string;
}
但显然数组的键只是数字所以我的界面变成了
interface MyInterface {
0: string;
1: string;
2: string;
}
而不是想要的界面
interface MyInterface {
prop1: string;
prop2: string;
prop3: string;
}
你知道是否有办法在 Typescript 中实现这一点?
这会很有用,因为我需要迭代一些属性来“克隆”一个对象,而且我还需要轻松访问这些属性。 在类型和接口中重复属性对我来说有点脆弱。
【问题讨论】:
-
尝试将
keyof SomeProperties更改为SomeProperties[number]。 -
@jcalz 这是个好主意,但不幸的是它不起作用,IDE 提示我属性,如
length、at、charAt等等,但不是prop1,prop2或prop3:( -
不是
keyof SomeProperties[number];只是SomeProperties[number]。 -
@jcalz 有用,谢谢!如果您创建答案,我可以接受它作为最佳答案
标签: arrays typescript types interface