【发布时间】:2021-01-15 14:17:38
【问题描述】:
下面,我有一个文字对象 {a:"a"}。我想将对象的值提取为文字“a”,而不是其类型字符串,以便检查其他变量是否为“a”而不是任何其他字符串。
但是,如果我使用映射类型,我只会得到字符串,而不是“a”。
有没有办法将值作为类型获取?
const a = {a:"a"}
type trueIfLiteral<T extends string>= string extends T?false:true;
type key = keyof typeof a;
const t1 : trueIfLiteral<key> = true; // key is literal
type val = typeof a[key];
const t2 : trueIfLiteral<val> = false; // val is string
所以问题很简单,我怎样才能得到一个类型:
type valAsLiteral = "a"
【问题讨论】:
标签: typescript typescript-typings mapped-types