使用keyof提取仅具有特定类型[duplicate]值的键的字符串文字联合”>

问题描述 投票:0回答:1

例如,我们如何仅提取具有字符串类型的键? Here is what I have tried:

type StringEntriesOnly<T> = {
    [K in keyof T]: T[K] extends string ? T[K] : never;
}

type SomeType = {
    aString: string;
    aNumber: number;
}

const v1: StringEntriesOnly<SomeType> = {
    aString: 'Hello',
    aNumber: 10, // This is a compiler error. Good. 
}

type StringKeys = keyof StringEntriesOnly<SomeType>;

const v2: StringKeys = 'aNumber'; // How can we make the compiler complain here?

在上面的示例中,我希望StringKeys仅允许'aString'。

例如,我们如何仅提取具有字符串类型的键?这是我尝试过的方法:类型StringEntriesOnly = {[T中的K]:T [K]扩展字符串? T [K]:从不; }类型...

typescript types conditional-types mapped-types
1个回答
1
投票

我通常这样定义KeysMatching

© www.soinside.com 2019 - 2024. All rights reserved.