ts的基础类型

112 阅读1分钟
// 基础类型 string number boolean

const arr: string = '123'
const arr2: number = 123
const arr3: boolean = true

//数组类型
const arrs: number[] = [1]
const arrs2: string[] = ['123']
const arrs3: Array<number> = [123]  //范型

//对象类型
const a: { user: string, name: string } = { user: '123', name: '小明' }
const b: { user: string, name?: number } = { user: '123' } // ? 表示当前属性可写可不写

// 联合类型
function mk(id: string | number) {// | 表示可以试string 或者是 number
  if (typeof id === 'string') {
    console.log(id.toUpperCase());
  } else {
    console.log(id);
  }
}

//类型别名
type user = { name: string, age: number }
const user2: user = { name: '小明', age: 18 }
const user3: user = { name: '小花', age: 10 }

//any(任意类型)
function shows(message: any) {
  console.log(message);

}

//函数类型

function abc(message: string): number { //函数的返回值需要是一个number类型
  return 123
}

//传递一个函数  返回的是需要是指定的类型
const def: (age: number) => number = (age: number) => { return 123 }

//接口类型 Interface

// Interface的特点可以继承。还可以自动合并相同类型的属性,
//Interface声明的复用性比较高,再能使用interface的情况下,推荐优先使用interface
interface student {
  age: number,
  sex?: string
}
interface student {
  names: string
}
// interface student2 extends student { name: string }
// const students: student2 = { age: 10, sex: '123', name: '123' }

const student3: student = { age: 18, names: '123' }

//交叉类型

type k = { name: string }
type m = k & { sge: number }
const kl: m = { name: '123', sge: 18 }

//断言 Assersion
const kj: null = document.getElementById('#root') as null

//字面量类型
const str: 'asd' = 'asd'
function getPosition(position: 'left' | 'right'): string {
  return position
}
getPosition('left')

//字面量练习

function request(url: string, methods: 'GET' | 'POST'): String {
  return 'sending request'
}

const params: { url: string, methods: 'GET' | 'POST' } = { url: 'immoc.com', methods: 'POST' };
request(params.url, params.methods)


//null和undefined
const f: null = null
const fs: undefined = undefined

//void(没有返回值)

function aaa(): void {
  return
}