在typescript中,如何为普通的旧式javascript对象编写类型签名,这些对象可以有任何键,但值始终是字符串。例如,{a:"foo"}
和{b:"bar"}
都是有效值,但{a:[1,2,3]}
和{b:3}
不是。
我希望能够写出像这样的东西
let foo : {*: string} = {a: "foo"}
目前,我正在使用any
来实现这一点,但这并不像我希望的那样精确。
发布于 2019-05-09 03:30:28
您可以使用索引签名来声明所有值都将是一个字符串...
type Example = { [key: string]: string };
示例:
type Example = { [key: string]: string };
const a: Example = {
"anything": "any string", // ok
anotherkey: "a string", // ok
thirdKey: 1 // Error
};
发布于 2019-05-09 03:32:55
我猜您正在查看属性值的enum
定义。
我认为你可以像这样声明它:
let foo: { [k: string]: 'foo' | 'bar' | 'type'};
foo.a = 'bar';
foo.d = 'type';
foo.q = 'bar';
foo.c = 'let'; // shows as not assignable
您可以在this typescript fiddle中看到它
https://stackoverflow.com/questions/56047753
复制相似问题