在打字稿中,如何为可以有任何键的普通旧javascript对象编写类型签名,但是值始终是字符串。例如,{a:"foo"}
,{b:"bar"}
都是有效值,而{a:[1,2,3]}
和{b:3}
都不是有效值。
我希望能够写类似的东西
let foo : {*: string} = {a: "foo"}
当前,我正在使用any
来实现这一点,但这并不像我想要的那么精确。
答案 0 :(得分:1)
您可以使用索引签名来声明所有值都是字符串...
type Example = { [key: string]: string };
示例:
type Example = { [key: string]: string };
const a: Example = {
"anything": "any string", // ok
anotherkey: "a string", // ok
thirdKey: 1 // Error
};
答案 1 :(得分:0)
我猜您正在使用enum
定义来定义属性值。
我认为您可以这样声明:
let foo: { [k: string]: 'foo' | 'bar' | 'type'};
foo.a = 'bar';
foo.d = 'type';
foo.q = 'bar';
foo.c = 'let'; // shows as not assignable
中看到它