我有一个对象文字,如下所示(所有属性在编译时都是已知的):
const foo = {
"hello": "hola"
};
Run Code Online (Sandbox Code Playgroud)
如果foo是界面而不是变量,我可以很容易地做类似的事情
/** THEORETICAL ONLY - Does not compile! */
function translate(input: keyof foo): string {
return foo[input];
}
Run Code Online (Sandbox Code Playgroud)
但是,使用变量这样做不起作用,因为编译器找不到具有该名称的接口foo.
Typescript是否支持keyof对在编译时已知其值的对象文字的操作?
Rya*_*ugh 99
keyof对类型进行操作,但它foo是一种价值.但是typeof操作符接受一个值并生成其类型,因此您可以使用它keyof typeof foo来执行此操作.
Eri*_*ric 11
有点偏离,虽然我正在寻找文字的索引器键,但将其放在这里以供将来参考。
const foo = {
"hello": "hola"
};
let data: { [key in keyof typeof foo]:number} & { name: string, index: number }[] = [] as any;
data.foo = 1;
data[0] = {name:'foo', 1};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7822 次 |
| 最近记录: |