Typescript 中文:
TypeScript中文网 · TypeScript——JavaScript的超集

TypeScriptJavaScript类型的超集他可以编译成纯JavaScript

  1. type-script
  2. ├─.gitignore
  3. ├─package-lock.json
  4. ├─package.json
  5. ├─tsconfig.json
  6. ├─webpack.config.js
  7. ├─src
  8. | index.ts

基于案例

编写一段ts的代码:

  1. class Greeter {
  2. constructor(message: string) {
  3. this.greeting = message;
  4. }
  5. greeting: string;
  6. greet() {
  7. return "Hello" + this.greeting
  8. }
  9. }
  10. let greeter = new Greeter("World");
  11. let button = document.createElement("button");
  12. button.textContent = "Say Hello";
  13. button.onclick = function () {
  14. alert(greeter.greet());
  15. }
  16. document.body.appendChild(button);

配置对ts文件的编译:

  1. const path = require("path");
  2. module.exports = {
  3. mode: "production",
  4. entry: "./src/index.ts",
  5. output: {
  6. filename: "[name].js",
  7. path: path.resolve(__dirname, "dist")
  8. },
  9. module: {
  10. // 使用 ts-loader
  11. rules: [{
  12. test: /\.ts/,
  13. use: "ts-loader",
  14. exclude: /node_modules/
  15. }]
  16. }
  17. }

wbepack的配置文件使用了ts-loader所以需要我们安装一下:

  1. $ npm install ts-loader typescript -D

到现在仍然不能打包typeScript,因为还需要对typeScript进行额外的配置:
React & Webpack · TypeScript中文网 · TypeScript——JavaScript的超集

新增TS的配置文件:

  1. {
  2. "compilerOpitions": {
  3. // 输出的路径(不写也可以)
  4. "outDir": "./dist",
  5. // 采用ESModule引入的方式
  6. "module": "es6",
  7. // typescript 代码转换为 es5 的写法
  8. "target": "es5",
  9. // 容许typescript引入js文件
  10. "allowJs": true
  11. }
  12. }

引入第三方库

假设我们的代码想要引入第三方的代码库比如loadsh,为了支持loadsh的语法提示我们还需要安装一个@types/lodash

  1. $ npm install @types/lodash -S
  1. import _ from "loadsh";
  2. class Greeter {
  3. constructor(message: string) {
  4. this.greeting = message;
  5. }
  6. greeting: string;
  7. greet() {
  8. return _.join(["Hello", this.greeting], "~")
  9. }
  10. }
  11. let greeter = new Greeter("World");
  12. let button = document.createElement("button");
  13. button.textContent = "Say Hello";
  14. button.onclick = function () {
  15. alert(greeter.greet());
  16. }
  17. document.body.appendChild(button);

现在如果_.join()不传入参数typescript就会提示错误!!!

假设我们现在引入jquery也别忘了安装@types/jquery,那么我知道哪些库可以安装对应的typescript语法支持呢?我们可以到 TypeSearch 进行搜索,如何搜到的话就可以安装@types/库名
image.png