[英]TypeScript: generically infer union type member based on a string literal property
[英]can typescript infer the string literal type without `as const`
为了让 js 能够很好地使用 api,如何让编译器在不使用as const
的情况下推断"bar"
类型而不是string
。
declare function define<T>(
options: {
foo: string;
bar: T;
}
): void;
declare function create<T>( cmd: T ): T;
define( {
foo: "foo",
bar: create( "bar" ) // It still string, instead of "bar"
} );
如this answer中所述, util 类型可以提供帮助:
type StringLiteral<T> = T extends string ? string extends T ? never : T : never;
declare function define<T>(
options: {
foo: string;
bar: StringLiteral<T>;
}
): void;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.