对象值参数的通用类型
Generic type of object value parameter
function getValues<T, U extends { [key: string]: T }>(object: U): T[] {
// ...
}
const test = { a: 123, b: 234 };
const values = getValues(test);
在上面的代码中,我希望 values
是 number[]
类型,但实际类型是 {}[]
.
我做错了什么?
此 { a: 123, b: 234 }
对象的类型是:
{ a: number; b: number; }
而不是
{ [key: string]: number }
你可以这样做:
const test = { "a": 123, "b": 234 } as { [key: string]: number };
告诉编译器它确实是你想要的。
但即便如此,您仍然无法获得 values
:
所需的类型
const values = getValues(test); // type of values {}[]
你应该这样做:
function getValues<T>(object: { [key: string]: T }): T[] {
return null;
}
const test = { "a": 123, "b": 234 } as { [key: string]: number };
const values = getValues(test);
function getValues<T, U extends { [key: string]: T }>(object: U): T[] {
// ...
}
const test = { a: 123, b: 234 };
const values = getValues(test);
在上面的代码中,我希望 values
是 number[]
类型,但实际类型是 {}[]
.
我做错了什么?
此 { a: 123, b: 234 }
对象的类型是:
{ a: number; b: number; }
而不是
{ [key: string]: number }
你可以这样做:
const test = { "a": 123, "b": 234 } as { [key: string]: number };
告诉编译器它确实是你想要的。
但即便如此,您仍然无法获得 values
:
const values = getValues(test); // type of values {}[]
你应该这样做:
function getValues<T>(object: { [key: string]: T }): T[] {
return null;
}
const test = { "a": 123, "b": 234 } as { [key: string]: number };
const values = getValues(test);