gpt4 book ai didi

TypeScript keyof 返回特定类型

转载 作者:搜寻专家 更新时间:2023-10-30 20:34:33 26 4
gpt4 key购买 nike

如果我有以下类型

interface Foo {
bar: string;
baz: number;
qux: string;
}

我可以使用 typeof 来键入一个参数,这样它只需要返回 stringFoo 键('bar' 'qux')?

最佳答案

typescript 4.1 及以上

通过在映射类型中添加 as 子句,我们现在可以将原始类型简化为:

type KeyOfType<T, V> = keyof {
[P in keyof T as T[P] extends V? P: never]: any
}

Playground Link

原始答案

您可以在 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

Playground Link

关于TypeScript keyof 返回特定类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49752151/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com