概述

这是我学习webpack中使用typescript的记录,供以后开发时参考,相信对其他人也有用。

学习typescript建议直接看中文文档英文文档,休闲之余可以看这篇TypeScript 总结博客

安装

在命令行下输入如下内容即可:

npm install -g typescript

tsconfig

首先需要配置tsconfig.json文件,官方常用配置如下。

一般这个时候在命令行输入tsc,npm就会自动把src目录下的所有ts文件编译过来放在built文件夹里面,并且文件夹也会移过来,并且是在同一个命名空间下面(所以不能声明重复的变量方法等)。

{
"compilerOptions": {
//输出目录为build
"outDir": "./built",
//接受js作为输入
"allowJs": true,
//转换为es5
"target": "es5" //下面为可选的 //模块引用方式为commonjs
"module": "commonjs",
//用mode进行模块解析
"moduleResolution": "node",
//使用sourceMap
"sourceMap": true,
//启用实验性的metadata API
"emitDecoratorMetadata": true,
//启用实验性的装饰器
"experimentalDecorators": true,
//不删去注释
"removeComments": false,
//不启用严格检查
"noImplicitAny": false
},
"include": [
//读取src目录下的所有文件
"./src/**/*"
]
}

Webpack

在webpack中使用要先安装相关loader,官方建议安装awesome-typescript-loader(因为它比ts-loader更快):

npm install awesome-typescript-loader source-map-loader --save-dev

webpack.config.js设置如下(要把awesome-typescript-loader放在ts的所有loader之前)。

module.exports = {
entry: "./src/index.ts",
output: {
filename: "./dist/bundle.js",
}, // Enable sourcemaps for debugging webpack's output.
devtool: "source-map", resolve: {
// Add '.ts' and '.tsx' as resolvable extensions.
extensions: ["", ".webpack.js", ".web.js", ".ts", ".tsx", ".js"]
}, module: {
loaders: [
// All files with a '.ts' or '.tsx' extension will be handled by 'awesome-typescript-loader'.
{ test: /\.tsx?$/, loader: "awesome-typescript-loader" }
], preLoaders: [
// All output '.js' files will have any sourcemaps re-processed by 'source-map-loader'.
{ test: /\.js$/, loader: "source-map-loader" }
]
}, // Other options...
};

导入导出

官方不建议用module导入导出模块,因为会出现找不到module的报错。官方建议用如下导出导出模块的方式。

//导入
import foo = require("foo");
foo.doStuff(); //导出
function foo() {
// ...
}
export = foo;

其它

连续添加参数

//官方不建议这么做
var options = {};
options.color = "red";
options.volume = 11; //官方建议这么做
let options = {
color: "red",
volume: 11
};

如果非要按照第一种方法,就需要先添加一个接口(任何这种没有定义的error都可以通过添加类型断言和接口来解决)。

interface Options { color: string; volume: number }

let options = {} as Options;
options.color = "red";
options.volume = 11;

any,Object和{}

从适用范围上来讲,any > Object > {}。

所以一般使用any和{}。

严格检查

严格检查通过如下方法设置:

"compilerOptions": {
//启用严格检查
"noImplicitAny": true,
//启用严格的null和undefined检查
"strictNullChecks": true
}

!可以在严格的null和undefined检查中忽略null和undefined检查

foo.length;  // 报错 - 'foo' is possibly 'null'

foo!.length; // 不报错 - 'foo!' just has type 'string[]'

如果函数中的this报错,就在函数参数中给this加上类型断言(一般来说只有在noImplicitThis为true时才会出现这种情况)。

Point.prototype.distanceFromOrigin = function(this: Point, point: Point) {
return this.getDistance({ x: 0, y: 0});
}

webpack中使用typescript的更多相关文章

  1. webpack中typeScript的打包配置

    2018年typescript发展的非常好,js是一门非常灵活的语言,所以一个功能,怎么写都能够写出来,但是这也会导致一个问题,不同人写js的方式不同,那么会导致同一个功能出现的代码风格会迥然不同.这 ...

  2. Webpack的详细配置,[Webpack中各种loader的安装配置]

    在使用webpack的时候,你是不是被以下这种报错所困扰: 注意看 黄色框中标注的 You may need an appropriate loader to handle this file typ ...

  3. 在Vue 中使用Typescript

    Vue 中使用 typescript 什么是typescript typescript 为 javaScript的超集,这意味着它支持所有都JavaScript都语法.它很像JavaScript都强类 ...

  4. Vue 中使用 typescript

    Vue 中使用 typescript 什么是typescript typescript 为 javaScript的超集,这意味着它支持所有都JavaScript都语法.它很像JavaScript都强类 ...

  5. 深入浅出TypeScript(5)- 在React项目中使用TypeScript

    前言 在第二小节中,我们讨论了利用TypeScript创建Web项目的实现,在本下节,我们讨论一下如何结合React创建一个具备TypeScript类型的应用项目. 准备 Webpack配置在第二小节 ...

  6. 如何在Vue项目中使用Typescript

    0.前言 本快速入门指南将会教你如何在Vue项目中使用TypeScript进行开发.本指南非常灵活,它可以将TypeScript集成到现有的Vue项目中任何一个阶段. 1.初始化项目 首先,创建一个新 ...

  7. webpack to package typescript & scss

    Demo2操作手册 本Demo演示如何配合各种loader进行稍复杂的使用 准备环境 初始化环境, cd到demo目录之后, 执行如下命令: npm init -y npm install webpa ...

  8. 从零配置webpack(react+less+typescript+mobx)

    本文目标 从零搭建出一套支持react+less+typescript+mobx的webpack配置 最简化webpack配置 首页要初始化yarn和安装webpack的依赖 yarn init -y ...

  9. Webpack中hash与chunkhash的区别,以及js与css的hash指纹解耦方案

    文件的hash指纹通常作为前端静态资源实现增量更新的方案之一,Webpack是目前最流行的开源编译工具之一,其强大的功能也带来很多坑(当然,大部分麻烦其实都可以在官方文档中找到答案). 比如,在Web ...

随机推荐

  1. [Ting's笔记Day4]将Ruby on Rails项目部署到Heroku

    今天想笔记的是把自己写的Ruby on Rails项目部署(Deploy)到Heroku! Heroku是Salesforce公司旗下的云端服务商,支持多种程序语言像是Ruby,PHP,Python等 ...

  2. windows上安装Maven与Gradle

    (一)安装Maven 1.百度maven,进入官网http://maven.apache.org/download.cgi,选择Download,在选择相应的压缩包apache-maven-3.6.0 ...

  3. JAVA数据库连接池C3p0 以及阿里Druid提供的连接池

    一:连接池的定义 本质上就是个容器(集合) 存放数据库连接的容器,当系统初始化后,容器被创建,容器中就会申请一些连接对象,当用户来访问数据库的时候,从容器中取连接对象,用户用完之后,归还. 二:常用的 ...

  4. 编译wiredtiger rpm包

    1.安装rpm-build 使用rpmbuild打包rpm包前,首先安装rpmbuild: yum install rpm-build -y 2.创建打包文件目录 mkdir  -p  /root/r ...

  5. jQuery——检测滚动条是否到达底部

    一.jQuery检测浏览器window滚动条到达底部 jQuery获取位置和尺寸相关函数:$(document).height()    获取整个页面的高度:$(window).height()    ...

  6. java学习笔记(二):枚举值

    枚举值的作用:枚举限制了变量要有一些预先定义的值,运用枚举值可以大大减少你的代码中的漏洞,举例来说,如果我们想为一家鲜榨果汁店编个程序,就可以将杯子的尺寸限制为小中和大.这样就可以确保人们不会定大中小 ...

  7. Appium 学习一:环境搭建问题

    1.安装Android-sdk http://tools.android-studio.org/index.php/sdk 问题1:下载 android-sdk_r24.4.1-windows.zip ...

  8. AppleID的双重认证

    [链接]AppleID的双重认证https://support.apple.com/zh-cn/HT204915

  9. [leetcode]54. Spiral Matrix螺旋矩阵

    Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or ...

  10. [leetcode]98. Validate Binary Search Tree验证二叉搜索树

    Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ...