搜索
简帛阁>技术文章>TypeScript 基础类型、变量声明、函数、联合类型、接口

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

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

一、基础类型1、任意类型any2、数字类型number3、字符类型string4、布尔类型boolean5、数组类型(无关键字)定义存储各种类型数据的数组时letarrayList:any[][1,f
录1联合类型2交叉类型3类型保护31自定义类型保护32typeof类型保护33instanceof类型保护1联合类型所谓的联合类型就是定义一些类型,定义的变量只需要满足任意一种类型即可,联合类型使用
本文总结一下TypeScript类型声明的书写,很多时候写TypeScript不是问题,写类型就特别纠结,我总结下,我在使用TypeScript中遇到的问题。如果你遇到类型声明不会写的时候,多看看lo
目录1基础类型2对象类型21数组22元组23对象3类型推断31类型联合中的类型推断32上下文类型4类型断言TS的静态类型可以人为的分为两类:基础类型:像布尔值(boolean)、数字(number)
变量声明let和const是JavaScript里相对较新的变量声明方式。像我们之前提到过的,let在很多方面与var是相似的,但是可以帮助大家避免在JavaScript里常见一些问题。const是对
代码的实现或者调用上能设定一定的限制和规范,就像契约一样。通常,我们把这种契约称为接口TypeScript的核心原则之一是对值所具有的结构进行类型检查。有时称为“鸭式辨型法”或“结构性子类型化”。
使用标记的联合类型构建付款方式假设咱们为系统用户可以选择的以下支付方式建模Cash(现金)PayPal与给定的电子邮件地址Creditcard带有给定卡号和安全码对于这些支付方法,咱们可以创建一个Ty
目录布尔类型数字类型字符串类型字符串和数字进行拼接undefined和null数组类型元组类型枚举类型any类型void类型联合类型总结布尔类型//布尔类型>boolean//let变量名:数据
交叉类型(IntersectionTypes)交叉类型是将多个类型合并为一个类型。这让我们可以把现有的多种类型叠加到一起成为一种类型,它包含了所需的所有类型的特性。例如,PersonSerializa
⒈交叉类型(IntersectionTypes)交叉类型是将多个类型合并为一个类型。这让我们可以把现有的多种类型叠加到一起成为一种类型,它包含了所需的所有类型的特性。例如,PersonSerializ