以下三个字符串分配有何不同?
let a: string = `my text`;
let b: string = 'my text';
let c: string = "my text";
他们都完美无缺。它只是个人品味的问题,哪一个使用或存在差异?
答案 0 :(得分:4)
返回标记实际上是JavaScript(template literals)的一部分,它们允许嵌入表达式。如果您使用较早版本的JavaScript transpiling,如果您的目标是较旧的JavaScript,那么,即使您使用旧版本的JavaScript,它也可以使用它们。
let user = "Socrates";
`Hi there ${user}` ; // Hi there Socrates
`Did you know your name is ${user.length} chars long?`;
对于双引号和单引号之间的差异,没有区别,如果在字符串中只使用一种类型,它们允许您避免转义引号字符。
'I asked "how are you?"'; // clearer than "I asked \"how are you?\""
"Frankly my dear, I don't give a damn"; // vs don\'t
答案 1 :(得分:3)
这实际上与Typescript无关。它是Javascript的一部分。
let a: string = `my text`; ---> template literal
let b: string = 'my text'; ---> just a string
let c: string = "my text"; ---> just a string
在ES6中添加了Template literals,它们允许插值:
let name = 'Martin';
let greetings = `Hello ${name}, how are you?`; // result: Hello Martin, how are you?
答案 2 :(得分:1)
第一个是es2015
中引入的模板字符串,您可以阅读有关here的更多内容,但要点是您可以在字符串中进行变量替换
let nr = 0
let a: string = `my text ${nr}`;
另外两个是标准JavaScript字符串,您可以使用或者,但建议您坚持使用。