簡體   English   中英

在javascript中檢測模板文字

[英]Detecting template literals in javascript

我們有兩個潛在價值:

const value = `Hello World`;

const value = {message: 'Hello World'};

我想做的是有條件的

if(is template literal) {
    // Some code
} else {
    // Some code
}

我試過使用

if(String.raw(value)){

} else {

}

但是對象拋出類型錯誤。 有沒有人有一種簡單可靠的方法來檢測javascript中的模板文字?

編輯:這是對那些詢問者的進一步說明。

const exampleFunc = (value) => {
    // If I pass a string or template literal return as is
    if (String.raw({raw: value})) return value;

    const css = arr(styles).reduce((acc, obj) => {
        // Passing an object handles a more complicated set of operations
    }

}

在我使用if(String.raw(value))返回值之前;

而且這里發生的是給我一個類型錯誤,而不是讓我為空。 通過將{raw:value}傳遞給String.raw可以解決問題,現在我可以檢測出它是字符串/模板文字還是對象。

我為什么要這樣做的澄清是一個更長的故事,與React和樣式化組件有關。

使用字符串文字和模板文字之間沒有區別(顯然,在源代碼級別上除外)。

但是您的第一個value是一個字符串,而第二個值是一個對象,這些值很容易區分:

if (typeof value == "string") {
    console.log(value)
} else if (typeof value == "object" && typeof value.message == "string") {
    console.log(value.message)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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