头图

一、简介
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,``拼接变量也编译成了''+变量的形式。
image.png

b、使用vscode自动编译ts文件
1、在项目目录下初始化tsc,在终端输入如下命令

tsc --init

2、初始化完成后,项目路径下会出现一个tsconfig.json文件,修改文件中的"outDir"属性值为ts文件编译后的js文件输出路径;修改"strict"严格模式为false。
image.png
3、点击vsCod的Terminal,选择Run Task,再选择最下面的Show All Tasks,点击tsc:watch。vsCode就配置好了自动编译ts文件了
编译好的js文件会存放在我们设置好的js文件夹中,只要vscode检测到ts文件的修改就会自动编译。
image.png

c、类型注解
类型注解是一种轻量级的为函数或变量添加约束的方式。
语法:变量名:数据类型

let fun = (str:string)=>{
    console.log(`Hello${str}`)
}
let num = 1; 
fun(num) //当参数的数据类型不是约束的string类型时,编译会提示错误,但编译好的js文件依然可以正常执行。

image.png

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']
}

Liane
16 声望2 粉丝