TypeScript 基础类型、变量声明、函数、联合类型、接口

一、基础类型

1、任意类型any

2、数字类型number

3、字符类型string

4、布尔类型boolean

5、数组类型(无关键字)

  定义存储各种类型数据的数组时

let arrayList: any[] = [1, false, 'any'];

6、元组:元组类型用来表示已知元素数量和类型的数组,各元素的类型不必相同,对应位置的类型需要相同。

let x: [string, number];
x = ['Runoob', 1];    // 运行正常
x = [1, 'Runoob'];    // 报错
console.log(x[0]);    // 输出 Runoob

7、枚举enum:枚举类型用于定义数值集合。

enum Color {Red, Green, Blue};
let c: Color = Color.Blue;
console.log(c);    // 输出 2

8、void,用于标识方法返回值的类型,表示该方法没有返回值。

9、null,表示对象值缺失

10、undefined,用于初始化变量为一个未定义的值

11、never,代表不会出现的值。这意味着声明为 never 类型的变量只能被 never 类型所赋值,在函数中它通常表现为抛出异常或无法执行到终止点(例如无限循环)

注意:

  在TypeScript中启用严格的空校验(--strictNullChecks)特性,就可以使得null 和 undefined 只能被赋值给 void 或本身对应的类型

  可以用 | 来支持多种类型,比如:

let x: number | null | undefined;
x = 1; // 运行正确
x = undefined;    // 运行正确
x = null;    // 运行正确

二、变量声明

1、ts的变量命名规则:不能以数字开头,不能包含下划线_和美元符号$之外的特殊字符

2、声明变量方式:

var [变量名] : [类型] = 值;
var [变量名] : [类型];
var [变量名] = 值;
var [变量名];

  4种方式,没有类型那么类型就是any;没有值,那么值就是undefined。

三、函数

1、函数返回值

function function_name():return_type { 
    // 语句
    return value; 
}

2、带参数函数

function func_name( param1 [:datatype], param2 [:datatype]) {   }

3、带可选参数和默认参数

  在 TypeScript 函数里,如果我们定义了参数,则我们必须传入这些参数,除非将这些参数设置为可选,可选参数使用问号标识 ?

function buildName(firstName: string, lastName: string) {
    return firstName + " " + lastName;
}
let result1 = buildName("Bob");                  // 错误,缺少参数
let result2 = buildName("Bob", "Adams", "Sr.");  // 错误,参数太多了
let result3 = buildName("Bob", "Adams");         // 正确

  将 lastName 设置为可选参数:

function buildName(firstName: string, lastName?: string) {
    if (lastName)
        return firstName + " " + lastName;
    else
        return firstName;
}
let result1 = buildName("Bob");  // 正确
let result2 = buildName("Bob", "Adams", "Sr.");  // 错误,参数太多了
let result3 = buildName("Bob", "Adams");  // 正确

  注意:可选参数必须跟在必需参数后面。 如果上例我们想让 firstName 是可选的,lastName 必选,那么就要调整它们的位置,把 firstName 放在后面。如果都是可选参数就没关系。

  我们也可以设置参数的默认值,这样在调用函数的时候,如果不传入该参数的值,则使用默认参数,语法格式为:

function function_name(param1[:type],param2[:type] = default_value) { }

  注意:参数不能同时设置为可选和默认

4、剩余参数

  有一种情况,我们不知道要向函数传入多少个参数,这时候我们就可以使用剩余参数来定义。剩余参数语法允许我们将一个不确定数量的参数作为一个数组传入。

function buildName(firstName: string, ...restOfName: string[]) {
    return firstName + " " + restOfName.join(" ");
}
  
let employeeName = buildName("Joseph", "Samuel", "Lucas", "MacKinzie");

  函数的最后一个命名参数 restOfName 以 ... 为前缀,它将成为一个由剩余参数组成的数组,索引值从0(包括)到 restOfName.length(不包括)。

5、函数重载

  重载是方法名字相同,而参数不同,返回类型可以相同也可以不同。

  每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表

  比如:参数类型不同、参数数量不同、参数类型顺序不同

四、联合类型

  联合类型(Union Types)可以通过管道 ( | ) 将变量设置多种类型,赋值时可以根据设置的类型来赋值。

  注意:只能赋值指定的类型,如果赋值其它类型就会报错。

  创建联合类型的语法格式如下:Type1|Type2|Type3

五、接口

1、接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要由具体的类去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法。

  我们定义了一个接口 IPerson,接着定义了一个变量 customer,它的类型是 IPerson

  customer 实现了接口 IPerson 的属性和方法

interface IPerson { 
    firstName:string, 
    lastName:string, 
    sayHi: ()=>string 
}
var customer:IPerson = { 
    firstName:"Tom",
    lastName:"Hanks", 
    sayHi: ():string =>{return "Hi there"} 
} 

  联合类型和接口

interface RunOptions { 
    program:string; 
    commandline:string[]|string|(()=>string); 
} 

2、接口继承

  接口继承就是说接口可以通过其他接口来扩展自己。

  Typescript 允许接口继承多个接口。

  继承使用关键字 extends。

  单接口继承语法格式:Child_interface_name extends super_interface_name

  多接口继承语法格式:Child_interface_name extends super_interface1_name, super_interface2_name,…,super_interfaceN_name

  继承的各个接口使用逗号 , 分隔

原文地址:https://www.cnblogs.com/goloving/p/12097361.html