这是我参与「第四届青训营 」笔记创作活动的第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的优点:
-
ts是js的超集,即你可以在ts中使用原生js语法。
-
ts需要静态编译,它提供了强类型与更多面向对象的内容。
-
ts最终仍要编译为弱类型的js文件,基于对象的原生的js,再运行。故ts相较java/C#这样天生面向对象语言是有区别和局限的
-
ts是由微软牵头主导的,主要来自C#
ts和js的区别:
1、ts引入了js中没有的“类”概念;
2、ts中引入了模块的概念,可以把声明、数据、函数和类封装在模块中;
3、js没有重载概念,ts有可以重载;
4、ts对比js基础类型上,增加了 void/never/any/元组/枚举等一些高级类型,如上代码部分。