Typescript 自定义按键映射

问题描述 投票:0回答:1
interface IObj {
    value:string;
    value2:string;
    value3:number;
}
let obj={
    value:"JS",
    value2:"www.google.com",
    value3:2018
}
type kM = "name"|"website"|"year";
const keyMap :{[key in kM]:keyof IObj}= {
    name:"value",
    website:"value2",
    year:"value3"
}
const year:number  = obj[keyMap["year"]]; // ERROR: Type 'string | number' is not assignable to type 'number'. Type 'string' is not assignable to type 'number'.
obj[keyMap["name"]] = "Javascript";  // ERROR: Type 'string' is not assignable to type 'never'.

我尝试自定义映射或访问对象内的键,但遇到错误。 应采取什么步骤来解决上述错误?

typescript
1个回答
0
投票

这可以通过类型断言来解决。

const year:number  = obj[keyMap["year"]] as number;

请查看 TypeScript Playground 以获取更多参考。

© www.soinside.com 2019 - 2024. All rights reserved.