1. 通过let a :number 来制定a的类型必须为 number类型。
ep: a = ‘hello' 	//报错
       a = 20 	//正确。
  1. 如果变量声明和赋值同时进行,ts自动对变量进行类型检测。
let a = 20	//自动认定a为number类型。
  1. typescript类型:number/boolean/string/object/any/array/tuple/字面量/void/enum{}/unknown等,javascript里有的没的ts里都有。
  2. unknown和any的区别
  1. 前者实际上是一个类型安全的any;
  2. any类型变量可以赋值给其他类型的变量,而unknown类型赋值给其他类型会报错
  3. 能用unknown尽量优先使用unknown。
  1. 类型断言:手动指定一个值的类型。
    写法一: 变量 as 类型;-> s = e as string [在tsx(React的jsx语法的ts版)中必须使用写法一]
    写法二:<类型>变量;-> s = e
  2. ts可指定函数返回值类型
ep:	function mySum(a: number, b: number): number {
	         return a + b;
		}	//指定函数的返回值类型为number
  1. void类型:用来表示空,以函数为例,就表示没有返回值
  2. never类型:永远不会返回结果,常用于报错
  3. {}类型:用来指定对象中可以包含哪些属性,在属性名后加’?'表示属性是可选的
  • 可选参数必须在必选参数之后,换句话说,必选参数之前不能有可选参数,当函数存在默认参数时,不受此规则的限制。
ep: let b: { name: string; age?: number };
        b = { name: "小明", age: 18 };
  1. 对象中存在[proName:string]:any
    表示任意类型的属性
ep: let c: { name: string; [proName: string]: any };
   	c = { name: "小红", age: 18, gender: "男" };
  1. 数组的类型声明:
    写法一:类型[];
    写法二:Array<类型> (也叫数组泛型)
  2. .tuple元组:就是固定长度的数组,存储效率相比数组更好
    写法:[类型,类型,类型]
  3. 类型的别名
ep: type myType = 1 | 2 | 3 | 4 | 5;
	       let k: myType;
	       let l: myType;
	       let m: myType;
	       k = 2;
  1. 实现typescript的实时监听转化:
    方法一:在终端通过 tsc xxx.ts -w 命令来实现对当前ts文件的监听,实时编译转化成最新的js文件。
    缺陷:只能对当前ts文件进行监听,如果有多个ts需要打开多个终端,适用范围窄。
    方法二:在当前文件夹下,创建tsconfig.json文件,代码块只需1行 {} 来符合json文件的格式要求,在终端输入 tsc -w 即可对当前文件夹下的ts进行实时转化和监听。
  2. 在属性名前加 readonly 实现该属性只在创建时被赋值
ep: interface Person {
       readonly id: number;
       name: string;
       age?: number;
       [propName: string]: any;
   }
   let tom: Person = {
       id: 89757,
       name: "Tom",
       gender: "male",
   }; //修改 tom.id = 666,则报错
  1. typescript中的函数表达式
let mySum = function (x: number, y: number): number {
           return x + y;
       };

上面的代码只对等号右侧的匿名函数进行了类型定义,而等号左边的 mySum,是通过赋值操作进行类型推论而推断出来的。
若需要手动 mySum 添加类型,则为️:

let mySum: (x: number, y: number) => number = function (x: number, y: number): number {
           return x + y;
       };
  1. =>在typescript和javascript中的区别:
    在 TypeScript 类型定义中,=> 表示函数的定义,左边是输入类型,需要用括号括起来,右边是输出类型。
    在 ES6 中,=> 为箭头函数。
  2. 重载:允许一个函数接受不同数量或类型的参数时,作出不同的处理。
ep: function myReverse(x: number | string): number | string | void {
           if (typeof x === "number") {
               return Number(x.toString().split("").reverse().join(""));
           } else if (typeof x === "string") {
               return x.split("").reverse().join("");
           }
       }