(sudo) npm i typescript -g
tsc --init 和
npm init -y
后生成tsconfig.json
和package.json
src/index.ts
const hello = '可待'console.log(hello);复制代码
tsc ./src/index.ts
成功生成index.js
文件var hello = '可待';console.log(hello);复制代码
为了方便使用,不用每次编写都使用tsc手动编译,咱们要将项目工程化javascript
webpack:统一编译html
webpack-cli:为了使用webpack的一些命令java
webpack-dev-server:更新后不用刷新,自动刷新node
ts-loader:ts编译规则webpack
typescript:使用typescript语言特性web
html-webpack-plugin:打包的文件直接输出HTML文件typescript
npm i webpack webpack-cli webpack-dev-server ts-loader typescript
html-webpack-plugin -D
复制代码
const HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
//入口
entry: './src/index.ts',
//出口
output: {
filename: 'app.js'
},
resolve: {
extensions: ['.js', '.ts', '.tsx']
},
devtool: 'cheap-module-eval-source-map',
module: {
rules: [{
test: /\.tsx?$/i,
use: [{
loader: 'ts-loader'
}],
exclude: /node_modules/
},
]
},
plugins: [
new HtmlWebpackPlugin({
template: './public/index.html' //须要添加宿主文件
})
]
}复制代码
记得添加宿主文件 /public/index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Ts使用</title> </head> <body> <div id='app'></div> </body> </html> 复制代码
"scripts": {
"dev": "webpack-dev-server --config ./build/webpack.config.js"
},复制代码
启动成功,后访问http://localhost:8080/
npm
无返回值void
的使用json
对象参数约束
数组
可以使用自定义类型写对象参数
//类型别名type:自定义类型,对类型的结构定义
type Prop = { prop: number }
//加强可读性
function fn3(o: Prop) { }
复制代码
function good(person: string): string { return person + '好棒!'}复制代码
function good(person: string, msg?: string): string { return person + '好棒!'}复制代码
class Parent {
private _dong = "dong"; // 私有属性,不能在类的外部访问
protected bar = "bar"; // 保护属性,能够在子类中访问
// 构造函数参数加修饰符,可以定义为成员属性
constructor(public tua = "tua") { }
// 方法也有修饰符
private someMethod() { }
// 存取器:属性方式访问,可添加额外逻辑,控制读写性
get dong() {
return this._dong;
}
set dong(val) {
this._dong = val;
}
}
class Child extends Parent {
baz() {
this.dong;
this.bar;
this.tua
}
}复制代码
接口和type区别:https://www.cnblogs.com/EnSnail/p/11233592.html
泛型(Generics)是指在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定 类型的一种特性。以此增长代码通用性。
// 不用泛型
// interface Result {
// ok:0|1;
// data: Feature[];
// }
// 使用泛型
interface Result<T> {
ok: 0 | 1;
data: T;
}
// 泛型方法
function getResult<T>(data: T): Result<T> {
return { ok: 1, data };
}
// 用尖括号方式指定T为string
getResult<string>('hello') // 用类型推断指定T为number
getResult(1)
// 进一步约束类型变量
interface Foo {
foo: string
}
// 约束T必须兼容Foo
function getResult2<T extends Foo>(data: T): Result<T> {
return { ok: 1, data };
}
getResult2({ foo: 'foo', bar: 'bar' })
复制代码
拓展Vue中使用TypeScript
juejin.im/editor/draf…