为什么仅在第二种情况下执行期间才会出现错误?

时间:2019-06-07 13:03:46

标签: typescript

第二种情况是什么问题?

function f(x) {   
    return (x as string).toLocaleUpperCase();
}

console.log("hello: "+ f("mr.")); // hello: MR.
console.log("hello: "+ f(0));
  

未捕获的TypeError:x.toLocaleUpperCase不是函数
     在f(:2:14)
     在:5:25
     在HTMLButtonElement.excuteButton.onclick>(https://www.typescriptlang.org/play/playground.js:247

1 个答案:

答案 0 :(得分:0)

据我了解,您的打字稿代码被转录为以下javascript代码:

function f(x) {
    return x.toLocaleUpperCase();
}
console.log("hello: " + f("mr.")); // hello: MR.
console.log("hello: " + f(0));

并且由于数字(如0),没有toLocalUpperCase字段,因此会出现错误。

我不确定这是否是最适合打字稿的方式,但这是一种适用于您两种情况的替代方法:

function f(x) {   
    return x.toString().toLocaleUpperCase();
}

console.log("hello: "+ f("mr.")); // hello: MR.
console.log("hello: "+ f(0));