02 ts 类型申明

7/20/2021 ts

# 类型注解/申明

基础类型 · TypeScript中文网 (opens new window) 高级类型 · TypeScript中文网 (opens new window)

// 申明变量 with 类型注解/类型申明
let a : string;

// 申明并赋值标量
let a : string = "abc";

// 类型推断
let a = "abc";
function add(x: number, y: number): number {
    return x + y;
}

let myAdd = function(x: number, y: number): number { return x + y; };

# 字面量

let a: 10;  // a 只能是 10,类似常量

let a: "male" | "female";  // 联合类型
a = "male"; // ok
a = "female"; // ok
a = "hello"; // 不 ok

let c: boolean | string; // c 可以是 boolean 或者 string

# any

一般不用

let a: any;
let a;  // 申明变量不指定类型,则隐式指定为 any

let s: string;
s = a; // 可以赋值,危险!

# unknown

类型安全的 any

[Typescript] 使用 unknown 类型代替 any 类型 - Meowu's Web Blog (opens new window)

let a: unknown;

let s: string;
s = a; // 不可以赋值
let a: unknown;

let s: string;
if(typeof s === "string"){
    s = a; // 可以赋值了
}

// 类型断言
s = a as string;
s = <string>a;

类型断言 | 深入理解 TypeScript (opens new window)

# object

指定对象中可以包含哪些属性(默认不能多不能少)

// age 是可选属性
let a: {name: string, age?: number};
a = {name: "swk"}

// 必要要求有 name, 其它属性不管(propName 是自定义名称,string 表示属性名是 string 类型,any 表示属性值是 any)
let b: {name: string, [propName: string]: any}
// 函数签名的申明(C#委托)
let f = (a: number, b: number) => number;

// 具体的实现
f = function(n1: number, n2: number): number{
    return n1 + n2;
}

# 联合类型

let j: {name: string} & {age: number};
j = {name: '孙悟空', age: 500};

# 类型别名

高级类型 · TypeScript中文网 (opens new window) - 类型别名

type myType = 1 | 2 | 3 | 4 | 5;
let a: myType;

a = 1; // ok
1 = 8; // 不 ok
type myType = {
    name: string,
    age: number
}

const obj: myType = {
    name: "abc",
    age: 123
} 

高级类型 · TypeScript中文网 (opens new window) - 接口 vs. 类型别名

更新时间: Saturday, August 28, 2021 17:56