ts-1:基本认知与实践
ts是js的超集,是对传统js的类型补充,存在的目的在于解决了js作为弱类型语言可随意更改数据类型的问题。浅显而谈,使用ts可以使js代码变得像JAVA等强类型语言一样严谨
传统js关注在于值是否正确,ts更关注于值的类型是否正确。
一: 特点: 静态类型
二:基本使用
-
下载 :
> npm install -g typescript
-
基本使用
//新建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 ()
未完待续