TS笔记

简介: TS笔记

typescript编译成js命令

tsc  文件.js

自动编译

tsc  --init

ts数据类型

原有类型:string、null、boolean、Array、null、undefined、symobol、object、bigint

新增类型:tuple(元祖)、enum(枚举)、any(任何类型)、void(用于标识方法返回值的类型,表示该方法没有返回值。)、never (never 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值)、unknown(任意 类型更安全)

数组语法

方式一:let 数组名:类型[] = [值1,值2]

let arrHeros:string[] = ['贾维斯','维托妮卡']

方式二:let 数组名:Array<类型>=[值1,值2]

let arrHeros:Array<string> = ['贾维斯','维托妮卡']

特点:元素类型固定

长度不限制

数据类型|元组

语法

let 元祖名:[类型1,类型2,类型3]=[值1,值2,值3]

枚举

enum 枚举名{枚举项=枚举值}

enum Guntype{k=1,v=2}

enum 枚举名{枚举项}

enum Guntype{k,b}

新增数据类型

tulp元祖  enmu枚举

any任意类型

安装ts

Vue add @vue/typescript

降级编译

tsconfig.js

target:'版本号'

严格模式

strict:true 全局严格模式

类型别名

type 类型名字=类型

接口

interface 名字{}

类型守卫

tyepof

案例

function printAll(strs:string|string[]|null){

if(strs){

if(typeof strs === 'object'){

  for(let s of strs){

  console.log(s)

  }

}else if(typeof strs ==='string'){

  console.log(strs)

}else{

}

}

}

类型断言

let 变量名=赋值类型 as 类型

案例

const myCavas1=<HTMLCanvasElement>document.getElementById("main")    

只读属性

readonly

类型创建

typeof操作符

案例

let s= '贾维斯'

let n:typeof s

n='星期五'


type Predicate=(x:unknown)=>boolean

type k =ReturnType<Predicate>

function f(){

return {

x:10,

y:3

}

}

type P=ReturnType<typeof f>

联合类型

keyof操作符


案例

type Point={

x:number,

y:number

}

type P= keyof Point


const P1:P='x'

const P2:P='y'

类型内推理

infer 对比类型

案例

type GetRturntype<Type> = Type extends (...ags: never[]) => infer Return ? Return : never;

type Num=GetRturntype<()=>number>

let num:Num=100

type Str=GetRturntype<(x:string)=>string>

let str:Str=''

type bools=GetRturntype<(a:boolean,b:boolean)=>boolean[]>

let bol:bools=[true,false]

type Never=GetRturntype<string>

let nev:Never='errp' as never


function stringOrNum(x:string):number

function stringOrNum(x:number):string

function stringOrNum(x:string|number):string|number

function stringOrNum(x:string|number):string|number{

return Math.random()>0.5?'hello':23

}

type T1=GetRturntype<typeof stringOrNum>

let t1:T1=100

let t2:T1='贾维斯'

类型的继承

implements 接口名字

例子

interface Point {

ping(): void

}

class Song implements Point {

ping() {

console.log('实现了接口')

}

}

成员可见性

public 公开的,默认值。任何对象都可以访问

protected 受保护,只能在当前类或者子类访问

private 私有的,只能在当前访问

静态成员

static  关键字


案例

class Myclass{

static x=100

static print(){

console.log(Myclass.x)

}

}

console.log(Myclass.x)

Myclass.print()  

基于类型守卫的this

this is 数据类型

抽象类和成员

abstract 关键字


案例

abstract class Base {

abstract getName():string

constructor() {

 

}

printName(){

console.log(this.getName())

}

}

class Derive extends Base{

getName(){

return '星期五'

}

}

let d=new Derive()

d.getName()

d.printName()  


相关文章
|
2月前
|
JavaScript 前端开发 API
第9期 一文读懂TS的(.d.ts)文件
第9期 一文读懂TS的(.d.ts)文件
71 0
|
JavaScript 前端开发 API
一文读懂TS的(.d.ts)文件
一文读懂TS的(.d.ts)文件
3886 0
|
2月前
TS 快速入门
TS 快速入门
10 0
|
11月前
ts的内置工具
ts的内置工具
59 0
|
2月前
ts笔记
ts笔记
|
8月前
|
JavaScript 前端开发 开发者
ts详解以及相关例子(一篇带你详细了解ts)
ts详解以及相关例子(一篇带你详细了解ts)
57 1
|
2月前
|
JavaScript
使用TS的一些基础知识
使用TS的一些基础知识
32 0
|
2月前
|
JavaScript 前端开发 编译器
ts面试题总结
ts面试题总结
85 0
|
8月前
|
JavaScript 前端开发 开发者
ts知识点
ts知识点
39 0
|
10月前
|
JavaScript 前端开发
ts - ts基础
https://www.tslang.cn/ TypeScript是Microsoft公司注册商标。 TypeScript具有类型系统,且是JavaScript的超集。 它可以编译成普通的JavaScript代码。 TypeScript支持任意浏览器,任意环境,任意系统并且是开源的。