如果我有以下类型
interface Foo {
bar: string;
baz: number;
qux: string;
}
Run Code Online (Sandbox Code Playgroud)
我可以使用typeof键入一个参数,使它只接受Foo返回string('bar'或'qux')的键?
Tit*_*mir 17
你可以在Tyepscript 2.8中使用条件类型:
type KeysOfType<T, TProp> = { [P in keyof T]: T[P] extends TProp? P : never}[keyof T];
let onlyStrings: KeysOfType<Foo, string>;
onlyStrings = 'baz' // error
onlyStrings = 'bar' // ok
let onlyNumbers: KeysOfType<Foo, number>;
onlyNumbers = 'baz' // ok
onlyNumbers = 'bar' // error
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
798 次 |
| 最近记录: |