chst365's blog chst365's blog
首页
  • Git
  • 网络
  • 操作系统
  • 浏览器
  • webpack
  • JavaScript
  • TypeScript
  • 性能
  • 工程化
  • React
  • 编程题
  • React技术揭秘
  • 算法
  • Node
  • 编码解码
  • NodeJS系列
  • Linux系列
  • JavaScript系列
  • HTTP系列
  • GIT系列
  • ES6系列
  • 设计模式系列
  • CSS系列
  • 小程序系列
  • 数据结构与算法系列
  • React系列
  • Vue3系列
  • Vue系列
  • TypeScript系列
  • Webpack系列
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

chst365

DIV工程师
首页
  • Git
  • 网络
  • 操作系统
  • 浏览器
  • webpack
  • JavaScript
  • TypeScript
  • 性能
  • 工程化
  • React
  • 编程题
  • React技术揭秘
  • 算法
  • Node
  • 编码解码
  • NodeJS系列
  • Linux系列
  • JavaScript系列
  • HTTP系列
  • GIT系列
  • ES6系列
  • 设计模式系列
  • CSS系列
  • 小程序系列
  • 数据结构与算法系列
  • React系列
  • Vue3系列
  • Vue系列
  • TypeScript系列
  • Webpack系列
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 浏览器

  • webpack

  • TypeScript

    • 一、类型基础
    • 二、数据类型
      • ES6的数据类型
      • TypeScript的数据类型
      • 类型注解
      • 枚举
        • 枚举成员
        • 常量枚举
    • 三、接口
    • 四、类
    • 五、类与接口的关系
    • 六、泛型
    • 七、类型检查机制
    • 八、高级类型
    • 九、ES6与CommonJS的模块系统
    • 十、使用命名空间
    • 十一、声明合并
    • 十二、如何编写声明文件?
    • 十三、tsconfig配置
    • 十四、编译工具:从ts-loader到Bable
    • 十五、代码检查工具:从TSLint到ESLint
    • 十六、单元测试
    • 十七、TS在react中的使用
    • 什么是TypeScript?
  • 性能

  • 工程化

  • React

  • JavaScript

  • 编程题

  • React技术揭秘

  • 算法

  • 前端
  • TypeScript
chst365
2020-03-15
目录

二、数据类型

# 二、数据类型

# ES6的数据类型

  • Boolean
  • Number
  • String
  • Array
  • Function
  • Object
  • Symbol
  • undefined
  • null

# TypeScript的数据类型

  • Boolean
  • Number
  • String
  • Array
  • Function
  • Object
  • Symbol
  • undefined
  • null
  • void
  • any
  • never
  • 元组
  • 枚举
  • 高级类型

# 类型注解

作用:相当于强类型语言中的类型声明 语法:(变量/函数):type

// 原始类型
let bool: boolean = true
let num: number | undefined | null = 123
let str: string = 'abc'
// str = 123

// 数组
let arr1: number[] = [1, 2, 3]
let arr2: Array<number> = [1, 2, 3]
let arr3: Array<number | String> = [1, 2, 3, '4']

// 元组
let tuple: [number, string] = [0, '1']
// 元组越界,可以通过push添加,但不可以访问
// tuple.push(2)
// console.log(tuple)
// tuple[2]

// 函数
let add = (x: number, y: number) => x + y
let compute: (x: number, y: number) => number
compute = (a, b) => a + b
// 对象
// let obj: object = {x: 1, y: 2}
let obj: {x: number, y: number} = {x: 1, y: 2}
obj.x = 3

// symbol 具有唯一的值
let s1: symbol = Symbol()
let s2 = Symbol()
console.log(s1 === s2)

// undefined,null
let un: undefined = undefined
let nu: null = null
num = undefined
num = null

// void 操作符 没有返回值的函数
let noReturn = () => {}

// any:ts中,未定义类型,默认为any类型
let x
x = 1
x = []
x = () => {}

// never:永远不会有返回值的类型
// 抛错
let error = () => {
    throw new Error('error')
}
// 死循环
let endless = () => {
    while(true) {}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

# 枚举

枚举:一组有名字的常量集合 枚举分为:数字枚举,字符串枚举,异构枚举

  • 数字枚举 -w758 枚举被编译成一个对象,首先,枚举成员的名称作为key,枚举成员的值作为value,这个表达式也直接返回value,然后value作为key,名称作为value,这种方法叫做反向映射
  • 字符串枚举 -w909 字符串枚举不可以做反向映射
  • 异构枚举:是数字枚举和字符串枚举的结合,容易引起混淆,不建议使用

# 枚举成员

-w700

# 常量枚举

常量枚举在编译后,会被移除,当我们不需要一个对象,只需要一个值的时候,就可以使用常量枚举,这样可以减少我们编译后的代码 -w662

-w705

// 数字枚举
enum Role {
    Reporter = 1,
    Developer,
    Maintainer,
    Owner,
    Guest
}
console.log(Role.Developer)
console.log(Role)


// 字符串枚举
enum Message {
    Success = '恭喜你,成功了',
    Fail = '抱歉,失败了'
}

// 异构枚举
enum Answer {
    N,
    Y = 'Yes'
}

// 枚举成员的值为只读,不可修改
// Role.Reporter = 2

// 枚举成员的分类:
// const(常量枚举):1、没有初始值 2、对已有成员的引用 3、常量表达式 
// computed(需要被计算的枚举成员,非常量的表达式): 这些表达式不会在编译阶段计算,会在执行的时候计算
// computed 必须被赋值
enum Char {
    // const
    a, 
    b = Char.a,
    c = 1 + 2,
    // computed
    d = Math.random(),
    e = '123'.length
}

// 常量枚举
const enum Month {
    Jan,
    Feb,
    Mar
}
let month = [Month.Jan, Month.Feb, Month.Mar]

// 枚举类型
enum E { a, b}
enum F { a = 0, b = 1}
enum G { a = 'apple', b = 'banana' }

let e: E = 3
let f: F = 3
// 不同枚举成员类型不可比较,同一枚举成员类型可以比较
// e === f
let e1: E.a = 1
let e2: E.b
// e1 === e2
let e3: E.a = 1
e1 === e3
let g1: G = G.b
let g2: G.a = G.a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#语言#TypeScript
上次更新: 2021/04/22, 00:08:06
一、类型基础
三、接口

← 一、类型基础 三、接口→

最近更新
01
面试官
03-27
02
this&指针&作用域&闭包
03-27
03
前端
03-27
更多文章>
Theme by Vdoing | Copyright © 2019-2025 chst365 | 豫ICP备17031889号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式