Javascript 动态访问对象属性的Typescript类型推断
Javascript 动态访问对象属性的Typescript类型推断,javascript,typescript,types,Javascript,Typescript,Types,dataError获取错误 interface CustomResponse { data: string; status: number; [key: string]: string | number; } const RESPONSE_PROPS = { DATA: "data", STATUS: "status", }; const response: CustomResponse = { data: "test", status: 20
dataError
获取错误
interface CustomResponse {
data: string;
status: number;
[key: string]: string | number;
}
const RESPONSE_PROPS = {
DATA: "data",
STATUS: "status",
};
const response: CustomResponse = {
data: "test",
status: 200,
};
let dataWrong: string = response[RESPONSE_PROPS.DATA];
let dataRight: string = response.data;
在上述情况下,如何在typescript中获得
数据错误
推断正确的类型?类型断言(更好的类型保护)是唯一的方法吗 RESPONSE\u PROPS.DATA
类型为string
,如果您使用as const
断言(这将使编译器保持RESPONSE\u PROPS.DATA
的字符串文本类型),它将按预期工作:
Type 'string | number' is not assignable to type 'string'. Type 'number' is not assignable to type 'string'
注意:如果字符串文字类型用于索引,则实际上不需要索引签名。哇,这很有效。。我可以得到一些关于这个const
类型推断的文档参考/文章吗?@Tamil另一个
interface CustomResponse {
data: string;
status: number;
// [key: string]: string | number; not necessary for the code to work
}
const RESPONSE_PROPS = {
DATA: "data",
STATUS: "status",
} as const;
const response: CustomResponse = {
data: "test",
status: 200,
};
let dataWrong: string = response[RESPONSE_PROPS.DATA];
let dataRight: string = response.data;