TypeScript

开篇废话

  • 什么是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类型,忽略了类型检测

你可能感兴趣的:(TypeScript)