例如,我有这种类型,它将返回只能容纳一个可能值的类型:
export type IfEqual<T, U> =
(<G>() => G extends T ? 1 : 2) extends
(<G>() => G extends U ? 1 : 2) ? true : false;
如果我像下面的示例那样进行声明,则可以得到只能为a
的值true
和只能为b
的值"foo"
。
declare const a: IfEqual<'a', 'a'>; // inferred as true
declare const b: IfEqual<'a', 'a'> extends true ? "foo" : "bar"; // inferred as "foo"
因为类型只有一个可能的值,所以我想知道是否有什么办法可以将类型直接转换为相应的值。
答案 0 :(得分:0)
“我想知道是否有什么办法可以将类型直接转换为相应的值。”
否。
Typescript仅在编译时存在。当代码被编译然后运行时,所有键入信息都消失了。剩下的就是运行的JavaScript。
实际上,如果将代码插入打字稿playground中,您会看到这是右侧窗格,完全是空的。所有类型都消失了。
Typescript不会为您执行任何实际逻辑或计算。相反,它只是确保使用代码库的类型正确编写了计算和逻辑。