Web Bookmark

GitHub仓库:基础类型

Number

  1. /* 数字类型
  2. -------------------------- */
  3. const binaryNumber: number = 0b1010
  4. const octalNumber: number = 0o1721
  5. const decimalNumber: number = 45
  6. const hexNumber: number = 0x1e3c

String

  1. /* 字符串类型
  2. -------------------------- */
  3. const string: string = '123Hello'

Boolean

  1. /* 布尔类型
  2. -------------------------- */
  3. const success: boolean = true
  4. const faile: boolean = false

Array

  1. /* 数组类型
  2. -------------------------- */
  3. const numberArr: number[] = [2333]
  4. const stringArr: string[] = ['Apple', 'Banana']
  5. /* 使用数组泛型
  6. -------------------------- */
  7. const otherNameArr: Array<number> = [1, 2, 3]
  8. const doubleTypeArr: (string | number)[] = [123, 'Apple']

Object

  1. /* object 类型
  2. -------------------------- */
  3. let obj = {
  4. name: 'chara'
  5. }
  6. let obj2 = obj
  7. obj2.name = 'C'
  8. console.log(obj);
  9. function getObject(obj: object): void {
  10. console.log(obj)
  11. }
  12. getObject(obj2)

Any

  1. /* any 类型
  2. -------------------------- */
  3. let anyValue: any = 123
  4. anyValue = 'abc'
  5. anyValue = false
  6. const anyArr: any[] = [1, 'a']

Undefined

  1. /* undefined 类型,是其他类型的子类型
  2. -------------------------- */
  3. const u: undefined = undefined

Null

  1. /* null 类型,是其他类型的子类型
  2. -------------------------- */
  3. const n: null = null

Never

  1. /* never 类型
  2. -------------------------- */
  3. const errorMessage = (message: string): never => {
  4. throw new Error(message)
  5. }
  6. const infiniteFunc = (): never => {
  7. while(true) {}
  8. }
  9. /* never 类型是任何类型的子类型,可以赋值给任何类型
  10. -------------------------- */
  11. const neverVariable = (() => {
  12. while(true) {}
  13. })()
  14. let num: number = 5
  15. num = neverVariable
  16. /* 没有类型是 never 的子类型或可以赋值给 never 类型(除了 never 本身)
  17. * 即使 any 类型也不可以赋值给 never 类型
  18. -------------------------- */

Enum

  1. /* 枚举类型
  2. -------------------------- */
  3. enum Roles {
  4. SUPER_ADMIN,
  5. ADMIN = 4,
  6. USER
  7. }
  8. console.log(Roles.SUPER_ADMIN)
  9. console.log(Roles[4])

Tuple

  1. /* 元组类型
  2. -------------------------- */
  3. const tuple: [string, number, boolean] = ['a', 1, true]

Void

  1. /* void 类型
  2. -------------------------- */
  3. const consoleText = (text: string): void => {
  4. console.log(text)
  5. }
  6. // void 类型的变量可以赋值为 undefined 和 null
  7. let voidVal = undefined
  8. voidVal = null

Type Assertion

  1. /* 类型断言
  2. -------------------------- */
  3. const getLength = (target: string | number): number => {
  4. if((<string>target).length || (target as string).length === 0) {
  5. return (<string>target).length
  6. } else {
  7. return target.toString().length
  8. }
  9. }
  10. getLength(123)
  11. getLength('Apple')
  12. /* 可以使用自定义类型保护来简化
  13. -------------------------- */