• TypeScript 笔记:变量声明、类型断言、变量作用域


    1 变量声明

    1.1 方式1:声明变量的类型及初始值:

    • var [变量名] : [类型] = 值;
    • 举例: 
      var fcname:string = "Wen River Heavy Industy";

    1.2 方式2:声明变量的类型,但没有初始值,变量值会设置为 undefined 

    var [变量名] : [类型];
    1. var fcname:string;
    2. console.log(fcname,typeof(fcname));
    3. //undefined undefined

    既然此时类型仍然是undefined,那么设置fcname的类型有什么用呢?

    如果我们之后给fcname赋值,比如fcname=1,那么会报错,因为赋的值不是string类型

    1.3 方式3: 声明变量并初始值,但不设置类型,该变量可以是任意类型

    1. var fcname='Wen River';
    2. console.log(fcname,typeof(fcname));
    3. //Wen River string
    • 在 TypeScript 中,变量的类型通常可以通过类型推论(Type Inference)来自动识别 
      • TypeScript 会通过赋值的初始值自动推断变量 fcname 的类型。在这个例子中,因为 fcname 是用一个字符串初始化的,TypeScript 会推断其类型为 string
    • 如果由于缺乏声明而不能推断出类型,那么它的类型被视作默认的动态 any 类型。

    1.4 方式4:声明变量没有设置类型和初始值,类型可以是任意类型,默认初始值为 undefined:

    1. var fcname;
    2. console.log(fcname,typeof(fcname));
    3. //undefined undefined

    2 类型断言

    类型断言可以用来手动指定一个值的类型,即允许变量从一种类型更改为另一种类型

    <类型>值

    或者:

    as 类型
    • 在 TypeScript 中,类型断言 valuevalue as Type 是一种告诉编译器我们比它更了解该值的类型的方法。
    • 它本质上是一种转型指令,但不同于其他编程语言中的类型转换,TypeScript 的类型断言是在编译时刻进行的,不涉及实际的类型转换,也不会改变变量的运行时值。 
    1. var str = '1'
    2. var str2:number = <number> <any> str //str、str2 是 string 类型
    3. console.log(str2)
    4. //1

    2.1 为什么需要any作为中转?

    这里如果直接

    var str2:number = <number>  str 

    是会报错的:

    TypeScript 断言的规则设计是保守的。它不允许直接将字符串string)断言为数字(number),因为这两者的内部结构和方法是不同的,没有足够的相似性 

    3 变量作用域

    TypeScript 有以下几种作用域:

    • 全局作用域 − 全局变量定义在程序结构的外部,它可以在你代码的任何位置使用。

    • 类作用域 − 这个变量也可以称为 字段。类变量声明在一个类里头,但在类的方法外面。 该变量可以通过类的对象来访问。类变量也可以是静态的,静态的变量可以通过类名直接访问。

    • 局部作用域 − 局部变量,局部变量只能在声明它的一个代码块(如:方法)中使用。

    1. var global_num = 12
    2. // 全局变量
    3. class Numbers {
    4. num_val = 13;
    5. // 实例变量
    6. static sval = 10;
    7. // 静态变量
    8. storeNum():void {
    9. var local_num = 14;
    10. // 局部变量
    11. }
    12. }
    13. console.log("全局变量为: "+global_num)
    14. console.log(Numbers.sval)
    15. // 静态变量
    16. var obj = new Numbers();
    17. console.log("实例变量: "+obj.num_val)
    18. /*
    19. 全局变量为: 12
    20. 10
    21. 实例变量: 13
    22. */

  • 相关阅读:
    Python统计学10——时间序列分析自回归模型(ARIMA)
    计算机图形学 实验二:曲线拟合
    基于vue和node.js的志愿者招募网站设计
    ChainSafe跨链桥部署教程
    云安全之信息内容安全
    音频处理库性能对比:计算mel频谱的速度哪个更快?
    【英语:语法基础】B8.核心语法-并列复合句和主从复合句
    Codeforces Round 932 (Div. 2) --- C. Messenger in MAC --- 题解
    iOS 通知扩展插件
    好用的翻译插件-一键自动翻译插件软件
  • 原文地址:https://blog.csdn.net/qq_40206371/article/details/133700899