typescript

基础类型

Boolean

number

string

null

undefined

any

void

never

object type

  • object{} 对象类型
let obj33:{name:string,age:number}={
    name:'11',
    age:11    
}

*array[] 数组类型

const list: number[] = [12, 23, 34]
//泛型
const listA: Array<number> = [1, 2, 3]
  • class 类型
class Person {}
const LinYY: Person  = new Person()
  • TS中类的继承和定义和JS基本一致
    ** 同样也能重写父类的属性
    ** 子类中有构造器 必须调用super()
  • TS中的静态属性,取值函数getter和存值函数setter,对某个属性设置存值函数和取值函数,拦截该属性的存取行为。
    ** Getter
class Person{
  constructor(private _name:string){} 

  get name(){
    return this._name;
  }
  set name(rename:string){
    this._name=rename
  }
}

** 定义get的属性表面上是一个函数,在调用是不需要加上() 这是get的写法
** 访问类中的私有属性可以通过get属性,写入一个‘方法’返回私有属性

  • fn() 类型
const getNumber: () => number = () => {
    // return 'LinYY'   报错
    return 123
}

// 要求返回值是string 字符类型
const getString: () => string = () => {
    return 'LinYY'
    // return 123
}

interface 自定义类型

//interface
interface Point {
    x: number,
    y: string
}
const point: Point ={
    x:123,
    y:'123'
}
  • interface之间可以互相嵌套
interface A{
  name:string,
  age:number
}
interface B{
  person:A
}
  • interface和type alias
    type 使用交叉类型& 俩者之间可以互相继承,但是interface使用更加广阔,能用interface不用type

type alias 类型别名 不是ts的基本数据类型,常用于提取公共类型

type User = { name: string, age: number }
let male: User = {name: 'LinYY', age: 18}
let famale: User = {name: 'nana', age: 18}

数组和元组

数组的类型注解

  • 类型[] Array<类型>
//对象数组
const objarr:{name:string,age:number}[]=[{
    name:'123',
    age:12    
}
  • 对于复杂的对象数组,可以采用类型别名type alias

元组 tuple 一种特殊的数组

  • 每个元素都有固定的类型并且有数目限定

typescript断言

类型断言

  • ‘尖括号’语法
let someValue:any = 'this is a string';
let str22:number=(<string>someValue).length;

// as 语法
let str33:number=(someValue as string).length;

非空断言

  • 在上下文中当类型检查器无法断定类型时,一个新的后缀表达式操作符!可以用于断言操作对象是非null和非undefined类型。
  • 即将x从类型null和undefined中排除

忽略undefined和null类型

function my(mystr: string | undefined | null) {
    // const str:string=mystr;
    const str2:string=mystr!;
}

调用函数时忽略undefined

type Num=()=>number;
function fn(num:Num|null){
    const num1=num();//error
    const num2=num!();
}

确定赋值断言

类型守卫

联合类型

  • 联合守通常与null和undefined一起用

TS中的this TS是JS的超集 this指向相同

泛型

  • 泛指的类型不具体针对某一特定的类型
//泛型
function foo<T>(a: any,b: any,c: any){
    return a||b||c;
    
}
function id<T>(a:T,b:T,c:T){
    return a||b||c
}
interface Type{
    a:number,
    b:number,
    c:number
}
let t:Type={a:2,b:2,c:2};
foo(1,2,'2');
id(1,2,3);

//接口泛型 
interface Uni<T>{
    a:T,
    b:T,
    c:T
}
posted @ 2022-09-09 17:25  Goodnighter  阅读(43)  评论(0)    收藏  举报