Live2d Test Env

ts是js的超集,是对传统js的类型补充,存在的目的在于解决了js作为弱类型语言可随意更改数据类型的问题。浅显而谈,使用ts可以使js代码变得像JAVA等强类型语言一样严谨

传统js关注在于值是否正确,ts更关注于值的类型是否正确。

一: 特点: 静态类型

二:基本使用

  1. 下载 : > npm install -g typescript

  2. 基本使用

//新建demo1.ts文件
function f1 (){
let  str : string = 'hello,world'
console.log(str)
}
f1()

运行 tsc demo1.ts即可生成demo1.js ,然后 node demo1.js即可在控制台输出hello,world

但这种太过繁琐,运行一个ts文件需要先编译成js文件再执行该js文件,并不友好

可以使用tsc-node减少步骤

npm install tsc-node -g
然后命令行下ts-node demo1.ts 即可直接运行 ts文件

tip:本质上也是先编译成js,然后再执行该js文件,因而速度会稍慢。

2.1 基本静态类型检测

ts目前已支持对所有基本类型进行约束,语法为在声明变量后加冒号后跟类型:

let str : string = '支持字符'
let num : number = 1
let bool : boolean = true
let n : null = null
let un : undefined 

2.2 Object类型检测

引入interface的定义:

interface是面向对象编程语言中接口操作的关键字,功能是把所需成员组合起来,用来装封一定功能的集合。它好比一个模板,在其中定义了对象必须实现的成员,通过类或结构来实现它...... 接口不能包含成员的任何代码,只定义成员本身 。 ----《百度百科·interface》

个人理解为 : 为即将声明的obj定义内部成员以及各个成员的类型

举个栗子:

//声明一个集合
interface Student{
name : string,
age : number,
}
//声明的obj对象必须包含student定义的成员且值的类型必须正确
const xb : Student = {
name : '爱丽丝',
age : 18
}

object静态类型检测

普通object


//速记法   obj : {member1:type1,member2:type2} = {member1:val1,member2:val2}
const alice : {
     name : string,
     age : number
} = {
      name : '奎奎',
      age : 18
}

Array

//如果读者对箭头函数的参数有所了解,这里也不是难题
//速记法   arr : (type1 | type2)[] = [val1,val2]   如果type只有一个,可以省略type的小括号;两个或两个以上,需加分隔符 '|'
const arr1 : (string | number)[] = ['小白',111]

Function

// 1. 无参数,此时只关心返回值类型(空格表示分类别)
// 速记法 fnName :()=>type = ()=>{return type}
const fn : () => string = ()=>{return ''}

Class

class Cag {}
const cag : Cag = new Cag ()

未完待续

原文地址:https://www.cnblogs.com/hjk1124/p/14280081.html