为什么typescript设定类型的变量通过函数能赋值成其他类型的值

let s:string = 'a';
let n:number = 0;
let o:object = {};
let b:boolean = true;

function set(arg:any):void{
    s = arg;
    n = arg;
    o = arg;
    b = arg;
}

set('abc');

console.log(s,n,o,b); // abc abc abc abc

已经设定好的类型,怎么通过函数里面可以赋值呢,在外面再复制其他类型的还是报错的

已解决 悬赏分:20 - 解决时间 2021-11-29 00:37
反对 0举报 0 收藏 0

回答2

最佳
  • @

    你这就等于

    let a :number = 0
    a = '123' as any

    any 类型的值能被任何类型所兼容,所以能给赋值给任何类型的变量。

    支持 0 反对 0 举报
    2021-11-28 09:21
  • @

    ???

    你不 any 了么?你都已经主动告诉 TS 放弃编译时类型检查了,却又问为啥能成功赋值?

    支持 0 反对 0 举报
    2021-11-28 10:51