typeScript

481 阅读1分钟
1 可以为值声明类型

function greeter(person: string) {

2 定义接口(范式)
注:js中没有

interface Person {
    firstName: string;
    lastName: string;
}

3 public等同于创建了同名的成员变量。

class Student {
    fullName: string;
    constructor(public firstName, public middleInitial, public lastName) {
        this.fullName = firstName + " " + middleInitial + " " + lastName;
    }
}

4 基础类型

let isDone: boolean = false;
let decLiteral: number = 6;
let name: string = "bob";
let list: number[] = [1, 2, 3];
let list: Array<number> = [1, 2, 3];

5 元组
元组类型允许表示一个已知元素数量和类型的数组

let x: [string, number];

6 虚拟枚举类型

对JavaScript标准数据类型的一个补充,类似javaenum Direction { // 数字枚举
    Up,
    Down,
    Left,
    Right,
}
// 字符串枚举
enum Direction {
    Up = "UP",
    Down = "DOWN",
    Left = "LEFT",
    Right = "RIGHT",
}


7 any表示任意类型

let notSure: any = 4;
let list: any[] = [1, true, "free"];


8 never类型表示的是那些永不存在的值的类型

适合场景:抛出异常// 返回never的函数必须存在无法达到的终点
function error(message: string): never {
    throw new Error(message);
}

9 Object表示非原始类型

declare function create(o: object | null): void;

create({ prop: 0 }); // OK

10 类型断言

let someValue: any = "this is a string";

let strLength: number = (<string>someValue).length;

11 ?可选属性

interface SquareConfig {
  color?: string;
  width?: number;
}

12 只读属性
readonly

13 类和继承

class Greeter {
    greeting: string;
    constructor(message: string) {
        this.greeting = message;
    }
    greet() {
        return "Hello, " + this.greeting;
    }
}

let greeter = new Greeter("world");

14 函数

function add(x: number, y: number): number {
    return x + y;
}

15 泛型

function identity(arg: any): any {
    return arg;
}
function identity<T>(arg: T): T {
    return arg;
}
//联合使用
let output = identity<string>("myString");  // type of output will be 'string'