【问题标题】:Default value for each type in typescript打字稿中每种类型的默认值
【发布时间】:2021-02-18 02:40:32
【问题描述】:

在哪里可以找到打字稿中每种类型的默认值?例如,哪里提到number 类型的默认值是null0.?或者关于string

默认值表示已定义但未分配的变量的值。喜欢let a : number;。这在对象定义中经常发生。例如:

 class A{
     let a: number;
     let b: string;
 }
 let obj: A;

因此,问题在于ab 的值对于obj

【问题讨论】:

    标签: typescript


    【解决方案1】:

    每种类型的默认值为undefined

    发件人:MDN - 'undefined'

    未赋值的变量是未定义类型。

    例如,即使greeting 的类型为String,调用以下命令也会提醒值“未定义”

    let greeting: string;
    alert(greeting);
    

    【讨论】:

    • 打字稿是这样吗?我的意思是当打字稿编译代码时,没有分配任何默认值?
    • @OmG 编译一些代码,自己看看。 TypeScript 只是 JS 之上的一个类型层,一个转译器。它不会改变代码的含义,也不会引入任何自己的语义。
    • 是的,打字稿确实如此。我会为你添加一个例子来回答你。
    • 感谢@torazaburo 修复了我根据原始答案制作的哈希值。
    【解决方案2】:

    您必须记住 Typescript 会转译为 javascript。在 Javascript 中,未赋值变量的默认值为 undefined,定义为 here

    例如,以下打字稿代码:

    let a: string; console.log(a);
    

    将转译为以下 javascript 并记录 undefined

    var a; console.log(a);
    

    这也适用于将参数传递给函数或类的构造函数:

    // Typescript
    function printStr(str: string) {
        console.log(str);
    }
    
    class StrPrinter {
        str: string;
        constructor(str: string) {
            this.str = str;
            console.log(this.str);
        }
    }
    
    printStr();
    let strPrinter = StrPrinter();

    在上面的代码示例中,打字稿会抱怨函数和类构造函数缺少参数。尽管如此,它仍然会转译为:

    function printStr(str) {
        console.log(str);
    }
    var StrPrinter = (function () {
        function StrPrinter(str) {
            this.str = str;
            console.log(this.str);
        }
        return StrPrinter;
    }());
    printStr();
    var strPrinter = StrPrinter();

    您可能还想看看 typescript 如何转译为 javascript here

    【讨论】:

    • 在最新版本的打字稿中,我发现您不能将“未分配”分配给字符串变量。这怎么可能?
    猜你喜欢
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 2017-08-04
    • 2019-11-25
    • 1970-01-01
    相关资源
    最近更新 更多