我想将货币代码列表转换为字符串文字。它具有设置const断言以生成字符串文字的功能。 Typescript 3.4。以下代码有效
let ccs = <const>['INR', 'USD']
type CurrencyCode = typeof ccs[number]
let cc: CurrencyCode = 'PKR'
它引发错误Type '"PKR"' is not assignable to type '"INR" | "USD"'
但是以下代码不会引发任何错误。为什么会这样呢?我应该进行哪些更改以确保函数的输出可以转换为字符串文字?
function getCurrencyCodes() {
return ['INR', 'USD']
}
let val: string[] = getCurrencyCodes()
let ccs = <const>[...val]
type CurrencyCode = typeof ccs[number]
let cc: CurrencyCode = 'PKR'
答案 0 :(得分:0)
Typescript不是运行时语言。
第二个代码不起作用,因为您使用的是witch函数,将在运行时对其进行评估。
使用const typescript时可以说出确切的类型。没有功能
function getCurrencyCodes(): ['INR', 'USD'] {
return ['INR', 'USD'];
}
const val = getCurrencyCodes();
const ccs = [...val];
type CurrencyCode = typeof ccs[number];
const cc: CurrencyCode = 'PKR'; // here you got error
因为函数类型是const可以通过打字稿来缩小 如果您要返回string [],则打字稿不能缩小确切的文字类型