【发布时间】:2020-01-13 14:53:35
【问题描述】:
是否可以创建一个使用keyof 访问对象属性并让 TypeScript 推断返回值的函数?
interface Example {
name: string;
handles: number;
}
function get(n: keyof Example) {
const x: Example = {name: 'House', handles: 8};
return x[n];
}
function put(value: string) {
}
put(get("name"));
// ^^^ Error: Argument of type 'string | number' is not assignable to parameter of type 'string'
TypeScript 将所有允许的类型合并在一起,但是当使用值 "name" 调用函数时,它不会推断类型是 string。
我可以通过转换类型来解决问题。
put(get("name") as string);
有没有办法在不强制转换的情况下做到这一点?
【问题讨论】:
标签: javascript typescript generics casting