理解打字稿类型断言

时间:2021-03-20 14:43:18

标签: typescript

我正在学习一个 TypeScript 教程,这段代码让我很困惑。

var str = '1' 
var str2:number = <number> <any> str   //str is now of type number 
console.log(typeof(str2))

log: String

据我所知,str首先被推断为String,然后在将其分配给str2时断言它是数字。 Str2 被定义为数字。那么为什么 str 和 str2 不是都是数字类型,因为一个被转换为数字而另一个被声明为数字?

1 个答案:

答案 0 :(得分:2)

TypeScript 类型断言转换表达式的。它只是告诉 TypeScript 编译器认为它是一个特定的类型。当您查看编译后的代码时,您不会在任何地方找到 if(command === "mute") { if(!message.member.hasPermission("ADMINISTRATOR")){ return message.channel.send("Nie masz permisji do tej komendy!") } const user = message.mentions.members.first() if(!user){ message.channel.send("Musisz kogoś oznaczyć") } let mute = db.get(`mute_${message.guild.id}_${user.id}`) if(mute === null) { db.set(`mute_${message.guild.id}_${user.id}`, 1) user.send(`${user.id} został zmutowany`) } } 。这就是为什么它不像你期望的那样表现的原因。如果要将值转换为数字,则必须使用 number 函数:

parseInt