一、简介
TypeScript 是由微软开发的一种开源的、跨平台的编程语言,最终会被编译成 JS 代码。TypeScript 是 js 的超集,次要提供了类型零碎和对 ES6+ 的反对,并且扩大了 js 的语法,任何现有的 js 程序都能够运行在 TypeScript 环境中。
TypeScript 特点:
1、始于 JavaScript, 归于 JavaScript
TypeScript 能够编译出污浊、简洁的 JavaScript 代码,并且能够运行在任何浏览器上,nodeJS 环境中和任何反对 ECMAScript3 或更高版本的 JS 引擎中。
2、弱小的类型零碎
类型零碎容许 js 开发者在开发 js 应用程序时应用高效的开发工具和罕用操作,比方动态检查和代码重构。
3、先进的 JavaScript
TypeScript 提供最新的和一直倒退的 js 个性,包含那些来自 ES6 的和将来提案中的个性。
二、装置
在命令行中运行如下命令,全局装置 TypeScript:
npm install -g typescript
装置实现后在控制台输入如下命名,查看装置是否胜利
tsc -V
三、编写 TS 代码
TypeScript 类型的文件扩大名为.ts
a、ts 初体验:
1、在 TS 文件夹下新建一个.ts 的文件,写上如下代码:
(()=>{function sayHi(str:string){return `Hi ${str}`
}
let name = 'Liane'
console.log(sayHi(name))
})()
2、在同目录下新建一个.html 文件,应用 script 标签引入该 ts 文件,发现浏览器会报错
3、在当前目录下关上命令行,输出 tsc 按 Tab 键,找到以后.ts 文件, 按回车键,就会在同级目录下输入一个编译好的 js 文件。
tsc .\0.ts
4、在 html 文件中引入编译好的 js 文件,可正确执行,编译好的 js 文件代码如下:
(function () {function sayHi(str) {return "Hi" + str;}
var name = 'Liane';
console.log(sayHi(name));
})();
5、咱们发现箭头函数被编译成一般函数申明的模式,let 关键字也替换成了 var,“ 拼接变量也编译成了 ”+ 变量的模式。
b、应用 vscode 主动编译 ts 文件
1、在我的项目目录下初始化 tsc, 在终端输出如下命令
tsc --init
2、初始化实现后,我的项目门路下会呈现一个 tsconfig.json 文件,批改文件中的 ”outDir” 属性值为 ts 文件编译后的 js 文件输入门路;批改 ”strict” 严格模式为 false。
3、点击 vsCod 的 Terminal,抉择 Run Task,再抉择最上面的 Show All Tasks,点击 tsc:watch。vsCode 就配置好了主动编译 ts 文件了
编译好的 js 文件会寄存在咱们设置好的 js 文件夹中,只有 vscode 检测到 ts 文件的批改就会主动编译。
c、类型注解
类型注解是一种轻量级的为函数或变量增加束缚的形式。
语法: 变量名: 数据类型
let fun = (str:string)=>{console.log(`Hello${str}`)
}
let num = 1;
fun(num) // 当参数的数据类型不是束缚的 string 类型时,编译会提醒谬误,但编译好的 js 文件仍然能够失常执行。
d、接口 -Interfaces
接口对于面向对象语言来说是一个很重要的概念,它是对行为的形象。简略来说是一种对类的束缚。
例如: 咱们定义一个人类,必须有名字和年龄,则能够定义一个接口,用来束缚每个被创立的人类都必须与接口放弃完全一致,属性不能多也不能少,属性值的类型也必须与接口保持一致。
语法:
// 定义一个接口
interface Person {
name: string,
age: number
}
let introduce = (p: Person) {return `Hi,My name is ${p.name},I am ${p.age} years old!`
}
let p1: Person = {
name: 'Liane', //name 的值必须是 string 类型
age: 18//age 的值必须是 number
}
console.log(introduce(p1))
四、应用 webpack 打包 TypeScript
1、下载依赖包
npm install typescript -D
2、在 webpack.config.js 中配置如下代码
module: {
rules: [
{
test: /\.tsx?$/,
use: 'ts-loader',
include: [resolve('src')]
}
]
},
resolve: { // 配置在我的项目中援用该类型的文件时不必写扩展名
extensions: ['.ts','.tsx','.js']
}