[英]Turning type literal into string literal in TypeScript
我意識到這可能違反了 TypeScript 哲學,但我想我還是會問。
是否可以在編譯時將類型文字轉換為字符串文字?
例如,我可以將"AnotherString"
分配給下面的str2
而不重復嗎?
// object to type, no problem
const obj = "SomeString";
let str1: typeof obj = obj;
// type into obj: ?
type SomeType = "AnotherString";
const str2: SomeType = valueof SomeType; // no such thing as valueof
是否可以在編譯時將類型文字轉換為字符串文字?
不,因為發出的代碼中不存在類型。 它編譯成的 JavaScript 是沒有所有類型的 TypeScript。 (幾乎)TypeScript 提供的一切都是在您編寫腳本時為您提供幫助,並且在運行時沒有任何影響,因為在編譯時它們都會被刪除。
這有效
const obj = "SomeString";
let str1: typeof obj = obj;
因為,編譯時,它是
const obj = "SomeString";
let str1 = obj;
但
type SomeType = "AnotherString";
const str2: SomeType = <something referencing SomeType>
不能工作,因為在編譯時,類型消失了,所以
const str2 = <something referencing SomeType>
沒有意義 - 如果 JavaScript 代碼中的任何地方都不存在"AnotherString"
,您將無法獲得它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.