TypeScript的初学习(2)

5.函数

函数类型

  • 为函数定义类型   
let myAdd = function(x: number, y: number): number { return x + y; };
  • 书写完整函数类型
let myAdd: (baseValue: number, increment: number) => number =
    function(x: number, y: number): number { return x + y; };

let my:(x:number,y:number)=>void
  • 推断类型:在函数的赋值语句一边指定类型而一边没有,类似上边为函数定义类型,编译器会自动识别类型

可选参数和默认参数

     ts中,传递给参数的个数与函数期望的参数个数一致。

    可选参数:在没传参时,是默认undfined。可选参数必须放在必选参数的后边。

    默认参数:为参数提供一个默认值当用户没有传递这个参数或者参数是undefined时。

    顺序:默认参数、必须参数、可选参数

剩余参数

  使用...,将剩余的参数全部包含在这个数组里。

this

  箭头函数能保存函数创建时的 this值,而不是调用时的值。

重载

  同一个函数提供多个函数类型定义来进行函数重载。 

6.泛型

  使用泛型定义,可支持多种类型的数据,用户可以根据自己的数据类型来使用组件。

function identity<T>(arg: T): T {
    return arg;
}
  • 使用泛型变量

   参数是任意或者所有类型 

function loggingIdentity<T>(arg: T[]): T[] {
    console.log(arg.length);  // Array has a .length, so no more error
    return arg;
}
  • 泛型类型

  泛型函数的类型 

function identity<T>(arg: T): T {
    return arg;
}

let myIdentity: {<T>(arg: T): T} = identity;
//类型参数在前边。

    泛型的接口

interface GenericIdentityFn<T> {
    (arg: T): T;
}

function identity<T>(arg: T): T {
    return arg;
}

let myIdentity: GenericIdentityFn<number> = identity;
  • 泛型类
class GenericNumber<T> {
    zeroValue: T;
    add: (x: T, y: T) => T;
}

let myGenericNumber = new GenericNumber<number>();
myGenericNumber.zeroValue = 0;
myGenericNumber.add = function(x, y) { return x + y; };

  泛型类指的是实例部分的类型,所以静态属性不能属于这个类型

  • 泛型约束

  定义接口来描述约束条件。

  在泛型约束中使用类型参数

  在泛型约束中使用类类型(类的类型)

7.枚举

  • 数字枚举
enum Direction {
    Up = 1,      //不设置默认值,是从0开始
    Down,   //2
    Left,    //3
    Right   //4 
}
  • 字符串枚举
enum Direction {
    Up = "UP",
    Down = "DOWN",
    Left = "LEFT",
    Right = "RIGHT",
}

异构枚举:混合字符串和数字成员

计算的和常量成员

  常量枚举表达式:一般之中包含一元或者二元运算符,带括号的常量,数字字面量或者字符串字面量。

  除了常量之外,所有的都被当做是需要计算的成员。

联合枚举与枚举成员的类型

  反向映射:

enum Enum {
    A
}
let a = Enum.A;
let nameOfA = Enum[a]; // "A"

const枚举:

  只能使用常量枚举表达式

外部枚举:

  用来描述已经存在的枚举类型的形状。

  与内部枚举的区别:在正常的枚举里,没有初始化方法的成员被当成常数成员。 对于非常数的外部枚举而言,没有初始化方法时被当做需要经过计算的。

8.类型推论

 最佳通用类型:选择最合适的一个通用类型

 上下文类型:类型推论也可能按照相反的方向进行,这被叫做“按照上下文分类”。按照上下文归类会发生在表达式的类型与所处的位置相关。

 

posted @ 2021-02-24 15:23  yaqian96  阅读(68)  评论(0)    收藏  举报