美文网首页
typescript笔记

typescript笔记

作者: 小涂异想世界 | 来源:发表于2020-10-26 10:06 被阅读0次

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');
})();

相关文章

网友评论

      本文标题:typescript笔记

      本文链接:https://www.haomeiwen.com/subject/kxnrmktx.html