簡體   English   中英

在 TypeScript 中將類型文字轉換為字符串文字

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM