Phi*_*tor 2 typescript typescript-typings union-types
我想公开一个方法,该方法采用一些 Union 类型作为参数,并为此提供自动完成功能。由于此联合类型可以通过声明合并进行扩展,因此自动完成是这里的一个关键功能。
但是,如果用户在使用我的库时不使用 TypeScript,或者不想在声明中添加特定类型,则它应该接受string联合类型的替代类型。
简而言之:我想要联合类型的自动补全,但也允许任何不匹配的字符串。
仅包含联合类型的示例:
export interface Values {
'variant-a': undefined,
'variant-b': undefined,
'variant-c': undefined,
}
function doAThing<T extends keyof Values>(name: T): void {
console.log(name);
}
Run Code Online (Sandbox Code Playgroud)
我尝试过的事情:
function doAThing<T extends keyof Values>(name: string): void;- 将类型与 , 合并keyof Values,然后两者都变成字符串。没有自动完成功能。string使用: <T extends keyof Values | string>- 合并到 only使泛型类型成为并集string。也没有自动完成功能。我在这里找到了一个解决方案:
export type Values = {
'variant-a': undefined,
'variant-b': undefined,
'variant-c': undefined,
}
type AnyString<T> = T | (string & {});
function doAThing<T extends keyof Values>(name: AnyString<T>): void {
console.log(name);
}
doAThing('variant-b'); // Autocompleted
doAThing('variant-d'); // Not autocompleted, but still accepted
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1050 次 |
| 最近记录: |