学习笔记

2022-04-02  本文已影响0人  苍老师的眼泪
// 隐式类型 
let n = 20
// n = 'str' n 隐式具有number类型

// 联合类型
type greet = "hello" | "hi" | "good morning"

let g:greet = "good morning"


// any和unkwonw

let a: any = 20     // 任意类型,此时编译器将跳过该变量的语法检查
let u: unknown = "unknown"  // 未知类型
// any 可以赋值给确定的类型,比如上面的number
n = a

// n = u  // 但是 unknown 不行,未知类型的值不能赋给确定类型的值
// 除非先判断类型
if (typeof u == 'number')
    n = u

// 或者类型断言
n = u as number
n = <number>u


// 返回类型 void never
function f1(): void {
    console.log('haha')
}

function f2(): never {
    throw new Error('抛出异常') // 永远不会返回结果
}


// {} 可以用来指定对象中需要包含哪些属性

let person: {
    name: string,
    alias?: string,
    gender: 0 | 1,
}

person = {
    name: "Edison", // 不能缺少当前属性
    // age: 26     // 不能添加其他属性
    gender: 1
}

// 添加任意属性
let obj: {
    [attr_name: string]: any
}

// 函数
let f: (a: number, b: number) => number

f = function(x: number, y: number) {
    return x + y
}


// 数组

let arr: number[]
arr = [1, 2]

let arr2: Array<number | string>
arr2 = [1,'hi']

type arr3 = Array<number | string>


// 元组 - 固定长度的数组
let tuple: [number, string]
tuple = [10, 'abc']

// enum枚举 - 列举所有可能的值
enum Color {
    Green,
    Red,
    Black,
    Purple,
}

let backgroundColor = Color.Red


// &操作符 - 同时满足多重类型要求

class Animal {
    age: number = 0;
}

// 男人必须满足动物和性别要求
let man: Animal & { gender: 'male' }

man = {
    age: 26,
    gender: 'male',
}


// type 关键字 创建类型别名

type smart_integer = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
let xzs: smart_integer = 2

上一篇下一篇

猜你喜欢

热点阅读