【发布时间】:2021-06-25 12:21:14
【问题描述】:
我正在寻找一个真正的 Typescript 书呆子来帮助我解决这个问题。 我正在尝试创建一个带有两个参数的函数; key 为接口的键,value 为接口上该键的类型值。为了限制类型,我想将键作为条件类型传递,因此该函数不允许我引入类型与接口上该键定义的类型不同的值。这是该方法的一个示例:
interface A {
a: number;
b: string;
c: boolean;
}
function Test<T extends keyof A> (key: T, value: Pick<A, T>){
return;
}
/* Expected results */
const res = Test<'a'>('a', 1) //ok
const res = Test<'a'>('a', true) //wrong
const res = Test<'d'>('d', true) //wrong
const res = Test<''>('', true) //display autocompletion of possible values (keys of A)
我正在寻找这些东西:
- 可用键值的自动完成
- 如果我设置的值的类型与接口 A 中为该键定义的类型不同,该函数会对我大喊大叫
如果其他方法与此方法一样严格,我接受。
问候
【问题讨论】:
-
function Test<T extends keyof A>(key: T, value: A[T]) -
如果你想自动完成,不要使用类型转换 - 你不需要类型转换 - 将推断通用参数
标签: typescript typescript-typings