我正在学习一个 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 不是都是数字类型,因为一个被转换为数字而另一个被声明为数字?
答案 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