前言
TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准
可以理解成TypeScript是高版本的JS
中文学习网址
安装TypeScript
npm install -g typescript
编写第一个TS
注意此时文件的后缀不再是js而是ts
function hello(){
let str:string = "Hello Word!!";
console.log(str)
}
hello();
然后执行命令
tsc ***.ts
执行结束后 会转为js文件 然后我们在执行js文件
这一系列操作下来太麻烦了,我们直接一步到位
安装便捷编译
npm i ts-node -g
执行当前命令会直接输出
ts-node ***.ts
定义变量
在ts中一旦定义了一个变量可以指定一个类型。
基础静态类型:
number、string、void、null、undefined、boolean、symbol、、、
一旦定义了类型,那么在重新赋值必须是和第一次赋值一样的类型,即使你在定义变量的时候不指定类型
let a : number = 1;
let b : string = "1";
b = 1;//报错字符串数字和number类型数字也是不能直接赋值的
let c = false;//在ts中这也是可法的,在定义的时候你可以不用指定类型
c = "false";//报错因为当前c变量在第一次赋值是属于boolean类型你不可改变该类型
c = true;//可法
c = 0;//不可法
c = !0;//可法,你可以赋值一个逻辑运算
基础对象类型定义
let object : {
name : string,
age : number
} = {
name : "测试基础对象定义",
age : 1
}
object = {
name :"减少、增加属性",
age : 222,
adress : "测试"
}//报错
基础数组类型定义
let any : string [];
any = ["a","b","c"]
any = ["1","2",3]//报错
let any1 :number[] = [1,2,3];
复杂多类型数组定义
let any :(number|string)[] = [1,"a","b",2]
定义函数
//定义一个没有返回值的函数
let doSomething : ()=>void=()=>{};
//返回字符串的函数
let doSomething1 : ()=>string = ()=>"1"
//返回数字类型的函数
let doSomething2 : ()=>number= ()=>1
//返回一个对象
let doSomething2 :()=>Person = ()=>new Person();
定义一个自定义类型
关键字inteface
interface Person {
userName : string,
age : number
}
let xiaoming : Person = {
userName :"小明",
age : 20
}
函数的返回类型注解
//返回值类型注明是string
function doSomething(name:string):string{
return "你好啊" + name;
}
//没有返回值
//或者直接可以不写void
function doSomething(name:string):void{
return "你好啊" + name;
}
let doSomething3 : Function = ():string=>"1"
函数返回类型有一个特殊的类型never
那么什么是never?
如果某个函数是never的返回类型,那么代表这个函数被阻断了,不能完全执行完成。
let neverFn = ():never=>{
console.log(111);
while(true){}//死循环
console.log(222);//不能执行到这里
}
let neverFn = ():never=>{
console.log(111);
throw new Error();
console.log(222);//不能执行到这里
}
元祖
元祖的定义其实就和数组