TypeScript | 青训营笔记

41 阅读1分钟

这是我参与「第四届青训营 」笔记创作活动的第5天

node环境安装

npm i -g typescript

tsc 文件名.ts 将ts转换成js

tsc ww.ts -w不需要每回都去解析,修改一下就会变成对应的js.

webpack打包

npm init-y

npm i -D webpack webpack-cli typescript ts-loader

打包运行的命令式 npm run build;

基本用法:

`

 //声明一个变量a,同时指定他的类型是number
let a :number;
a =10,
a =33;
// a = 'hello'  会报错

let b :string;
b = 'hello';
// 声明完变量直接进行赋值
let c :boolean = false;

//如果变量的声明和赋值是同时进行的,TS可以自动对变量进行类型检测
let d = false;
d = true;

//js中的函数是不考虑参数的类型和个数的
function sum(a,b){
    return a+b;
}
console.log(sum(1,2));
console.log(sum(11,'234'));

//object表示一个js对象

let e :object;

//{}用来=指定对象中可以包含那些属性

//语法:{属性名:属性值,属性名:属性值}

//加上一个?,表示属性时可选的

let f:{name:string}

f ={name:'孙悟空'}

let g:{name:string,[propName:string]:any}

g = {name:'李典',age:12}

// 设置函数结构的类型声明:

// 语法:(形参:类型,形参:类型)=>返回值

let m :(a:number,b:number)=>number;
m = function(n1,n2){
    return n1+n2
}
console.log(d(2,3));


//数组的类型声明

//string[]表示字符串数组
let o :string[];
o=['q','w','e']

let t :Array<number>
t =[1,2,3]

let h :[string,string];

h =['hello','123'];

// enum 枚举 enum Gender{

Male =0,

Female =1

}

let i:{name:string,gender:Gender}

i = { name:'李典' , gender:Gender.Male

} console.log(52);

console.log(i.gender === Gender.Male);

//&表示同时

let l :{name:string}&{age:number}

l = {name:'孙悟空',age:23} `

ts的优点:

  1. ts是js的超集,即你可以在ts中使用原生js语法。

  2. ts需要静态编译,它提供了强类型与更多面向对象的内容。

  3. ts最终仍要编译为弱类型的js文件,基于对象的原生的js,再运行。故ts相较java/C#这样天生面向对象语言是有区别和局限的

  4. ts是由微软牵头主导的,主要来自C#

ts和js的区别:

1、ts引入了js中没有的“类”概念;

2、ts中引入了模块的概念,可以把声明、数据、函数和类封装在模块中;

3、js没有重载概念,ts有可以重载;

4、ts对比js基础类型上,增加了 void/never/any/元组/枚举等一些高级类型,如上代码部分。