TypeScript是微软推出的JavaScript类型的超集,它可以编译成纯JavaScript;
安装typescript
命令行
cnpm i typescript -g
查看当前ts版本号
tsc -v
新建文件夹,然后初始化 cnpm init -y
输入以下命令可以将ts文件转化为浏览器可以识别的js文件
tsc 文件名.ts
这样就实现了一个简单ts
文件的转换啦~
那么这样实现显然一个个的转化效率是非常低的,所以我们需要来工程化一下,
输入以下生成tsconfig.json
文件,在这个文件里面调整ts配置
tsc --init
经过以上这些操作,我们只需要以下命令,就可以一键转换所有的ts文件啦
tsc
2.1 常见的数据类型中ts的定义
2.11 数字类型ts限制并不强,但是不可以把string类型赋值给原本是数字类型的变量;
let num = 15; //定义一个数字
//实际上ts原型是这样的,这两者是相同的
let num:number = 15;
2.12布尔类型,只能给变量设置true
或者false
属性,0和1不可以;
let isLoading = true;
let isLoading:boolean = false;//两种写法都可以
2.13字符串类型,
let str = 'hello';
let str:string = 'hello' ; //两种写法都可以
2.14 预先不定义的any类型
let anything:any ;
anything = 15;
anything = 'hello'; //这几种写法都是被允许的
2.15 数组,也是一样的不能将内容是字符串的修改为数字;
let arr = ['ben','berry','bob'];
let names:Array<string> = ['ben','berry','bob']; //两种写法是相同的
console.log(names[0]);
2.16 元组,设置一个定义了类型的数组,顺序和类型都是不可修改的,必须一一对应
//元组
let color:[string,number]=['green',1]
2.17 枚举enum, 枚举类型可以自定义数据类型
enum Color {
black,
yellow=100, //可以给yellow重新赋值数字类型,下面的值也会从这一位开始+1
green
}
let myColor:Color = Color.black;
console.log(myColor);//按照原始的顺序这里打印为0,因为black是第0位,下面的颜色依次是0,1,2
3.1函数的相关类型
3.11规定函数的返回值的类型
function plant():string{
return 'earth'
}
console.log(plant());
3.12 空函数,即函数没有设置返回值
function sayHello ():void{
console.log('hello');
}
3.13 参数类型,规定参数返回值是固定的类型
function someValue (val1:number,val2:number){
return val1+val2
}
console.log(someValue(1,2));
3.14 函数类型,同时规定函数的参数和返回值都是固定类型
//规定了函数的参数类型是number,返回值也是number
let myFun:(a:number,b:number)=>number;
4.1对象的相关类型
4.11简单的对象类型
//对象生成的时候已经给他定义了属性(填进去的值)
let dataObj : {name:string,age:number} = {
name:'Herry',
age:18,
};
//修改的时候当前对象的所有属性都要带上
dataObj ={
name:"sky",
age:15
}
4.12复杂对象类型
//复杂对象类型
let complex: {data:number[],myfunc:(item:number)=>number[]}
complex = {
data:[1,2,3],
myfunc:function(item:number):number[]{
this.data.push (item);
return this.data
}
}
显然这样会有一个问题就是操作起来太复杂了
4.13 type生成类型,先定义type类型,后使用
//type生成类型
type MyType = {data:number[]; myFunc:(item:number)=>number[]};
let complex2: MyType ={
data:[1,2,3],
myFunc:function(item:number):number[]{
this.data.push(item);
return this.data;
}
};
5.1 union type 类型检查 和undefind 、null 、never
5.11 union type设置多种类型
let unionType: any = 12;
unionType = '12'; //不会报错,因为设置的是any类型
let unionType1:string | number | boolean = 12;
unionType1 = true; //不会报错,因为设置了或,三者之一就不会报错;
5.12类型检查
//检查类型
let checkType = 10;
if(typeof checkType == 'string'){
console.log('number');
}
5.13 null 和 undefind
let myNull = 12;
myNull = null; //会报错
//如果开启严格模式就不能这样赋值
mrtbd 没有自己的书记类型。nerver是一个任意类型的子类型,不能讲其他类型转为nerver类型
5.14 never, never never类型是任何类型的子类型,可以赋值给任何类型;
然而,没有类型是never的子类型或可以赋值给never类型(除了never本身外)。即使any也不可以赋值给never。通常表现为抛出异常或者无法执行到终止点(例如无限循环)
let x: never;
x = 123; //会报错不能将其他类型转为never类型
//never的应用场景 抛出异常
function error(message:string):never{
throw new Error(message);
}
//死循环
function loop():never{
while(true){}
}
let y: number;
y = (()=>{
throw new Error ('message');
})();
网友评论