开篇废话
- 什么是typescript?
javascript的超集,几乎可在typescript中使用js一切语法
不是用来运行的, 仅仅在编译的时候工作。最终运行的是纯 JavaScript. - 为什么使用typescript?
静态类型检测
接口编程
用写java的方式写js
去掉代码逻辑内的类型检查,加快代码执行速度
强大的编译器,替代babel,可编译出可读性很强的es5,es6 - typescript对比flow
//todo
简单语法对比
- 类型注解
- 接口
- 类
前端使用typescript
后端使用typescript
环境搭建
//全局安装typescript
npm install -g typescript
//初始化node-ts项目
npm init -y
npm install express
//安装node类型声明文件以便使用node内部模块时编译不会报错
npm install @types/node
创建服务
src/App.ts
//App.ts
import * as express from 'express'
class App {
public express
constructor() {
this.express = express()
this.mountRoutes()
}
private mountRoutes (): void{
const router = express.Router()
router.get('/', (req, res) => {
res.json({
message: 'hello world'
})
})
this.express.use('/', router)
}
}
export default new App().express
src/index.ts
//index.ts
import app from './App';
import * as http from 'http';
const port = 3000
app.set('port', port)
const server = http.createServer(app)
server.listen(port, (err) => {
if(err) {
return console.log(err)
}
console.log(`server is listening on ${port}`)
})
配置tsconfig.json
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"outDir": "dist",
"sourceMap": true
},
"include": [
"src/*.ts"
],
"exclude": [
"node_modules"
]
}
没有typeing类型声明文件,又不想报错
- 自己写typings/*.d.ts
- 使用require(''), 自动解析为any类型,忽略了类型检测
网友评论