ts 小白,初次学习 ts,想实现一个函数,传入一个字符串数组,返回一个以这个数组里的元素作为 key 的对象
function fn (array: string[]): ReturnType {}
比如传入 ['a', 'b', 'c'],会返回 {'a': 1, 'b': 2, 'c': 3}
现在卡在了这个 ReturnType 类型要怎么写上面。。。
一种思路是
interface ReturnType { [key: string]: number }
但是这样提示不够精确,想让 ts 能够提示出返回值包含 a,b,c 三个属性,大家有什么思路吗
1
B3C933r4qRb1HyrL 2021-04-01 20:35:34 +08:00
interface IType {
a: number; b: number; c: number; } 这样? |
2
codehz 2021-04-01 20:38:08 +08:00 3
declare function fn<T extends string>(input: T[]): Record<T, number>;
const ret = fn(['a', 'b']); ret.a = 1; ret.b = 2; ret.c = 3; // error: Property 'c' does not exist on type 'Record<"a" | "b", number>'. |
3
B3C933r4qRb1HyrL 2021-04-01 20:59:06 +08:00
@codehz 应该是你这样...我没看入参...
|
4
noe132 2021-04-01 21:47:50 +08:00
|