ts文档学习(一)

·  阅读 59

前言

听说项目要升级了,来学一波ts,之前写过一点ts,但基本上写成了anyscript,不过亡羊补牢为时不晚。

类型

ts在声明的时候即确定类型,类似int、char,而在js中变量的类型是能动态改变的。

let key = 1 //key的类型为number
key = ‘1’ //报错 Type 'string' is not assignable to type 'number'
复制代码

基础的类型如number、string、boolean,联合类型是多种其他类型组成,比如Boolean可以看成是 true或false的联合类型,值得注意的是联合类型在代码编写过程中会产生缩小类型的现象

function test(arg: number | string) {
  if(typeof arg === 'string') {
    return arg //string
  }
  return arg //number
}
复制代码

定义对象类型可以使用别名或者接口

type Human = {
  age: number
  sex: string
}
interface Animal {
  age: number
  sex: string
}
const BaJie: Human = {
  age: 122,
  sex: 'Y'
}
const pig: Animal = {
  age: 12,
  sex: 'Y'
}
// 如果把鼠标移到八戒和pig上面,interface定义的对象属性会有比type更详细的提示interface Animal {
  hobbey?: string[]
}
pig.hobbey = ['eat', 'sleep']
​
// type Human =  {
//   hobbey?: string[]
// } error// interface是开放的,type是封闭的,基于不同的目的,这个区别可能是正面的也可以是负面的
复制代码

定义数组类型T[]。

枚举是ts新增的类型,将ts的枚举编译成js

//ts
enum StatusCodes {
  OK,
  BadRequest = 400,
  Unauthorized,
  PaymentRequired,
  Forbidden = 'cvas',
  NotFound = 200,
}
//js
"use strict";
var StatusCodes;
(function (StatusCodes) {
    StatusCodes[StatusCodes["OK"] = 0] = "OK";
    StatusCodes[StatusCodes["BadRequest"] = 400] = "BadRequest";
    StatusCodes[StatusCodes["Unauthorized"] = 401] = "Unauthorized";
    StatusCodes[StatusCodes["PaymentRequired"] = 402] = "PaymentRequired";
    StatusCodes["Forbidden"] = "cvas";
    StatusCodes[StatusCodes["NotFound"] = 200] = "NotFound";
})(StatusCodes || (StatusCodes = {}));
​
复制代码

枚举默认是基于数字的,它的值从 0 开始,其余的每个值都会自增 1,枚举可以正反向映射,但不限于字符串枚举.

函数

函数的声明需要确认入参类型和返回类型

//元组类型

\

分类:
阅读
标签:
收藏成功!
已添加到「」, 点击更改