【原】无脑操作:TypeScript环境搭建
概述:本文描述typescript环境搭建,以及基于vscode的自动编译设置和调试设置。网络上很多相应文章的方式过时了或者无法试验成功。
-------------------------------------------------------------------------------------------------------------------------
typescript简介:由微软开发的开源免费的编程语言,是javascript语言的一个超集,本质上为javascript语言添加了可选的静态类型和基于类的面向对象编程概念。
typescript的作者是大名鼎鼎的anders hejlsberg,没错,就是delphi和c#之父。
-------------------------------------------------------------------------------------------------------------------------
1、typescript环境搭建:
① 操作系统:windows 7 64位旗舰版
② 从node.js官网()下载当前稳定版本的node.js(截至2019年04月27日,node-v10.15.3-x64.msi)
下载完毕,点击安装,选择好安装路径,一路回车安装即可。
③ 当前版本的node.js默认就带有npm工具。所以,安装完毕后,在命令行窗口中分别输入node -v 和 npm -v,查看版本信息,验证是否安装成功。
④ 使用npm安装typescript,在命令行窗口中输入 npm install -g typescript,全局安装typescript。安装完成后,可以输入 tsc -v,查看typescript编译器的版本信息。
⑤ 新建一个demo.ts文件
function say(msg) { return "hello, " + msg; } let str = "typescript"; console.log(say(str));
在命令行窗口中,使用tsc指令(输入: tsc demo.ts)编译为对应的javascript文件demo.js,打开该文件
function say(msg) { return "hello, " + msg; } var str = "typescript"; console.log(say(str));
可以使用node.js对生成的javascript文件进行执行
-------------------------------------------------------------------------------------------------------------------------
2、使用vscode搭建开发环境
① 从vscode官网()下载当前稳定版本(截至2019年04月27日,vscodeusersetup-x64-1.33.1.exe)
② 喜欢中文的朋友可以安装vscode的中文插件
③ 创建目录demo,使用vscode选择该目录,点击"终端"----->新建终端(快捷键:ctrl + shift + `),输入 tsc --init,创建出tsconfig.json文件。
④ tsconfig.json是typescript的配置文件,我们放开sourcemap 和 outdir的设置。其中,sourcemap是为了后续调试使用,outdir指定了自动编译时生成出javascript文件的位置。
{ "compileroptions": { /* basic options */ "target": "es5", /* specify ecmascript target version: 'es3' (default), 'es5', 'es2015', 'es2016', 'es2017', 'es2018', 'es2019' or 'esnext'. */ "module": "commonjs", /* specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'esnext'. */ // "lib": [], /* specify library files to be included in the compilation. */ // "allowjs": true, /* allow javascript files to be compiled. */ // "checkjs": true, /* report errors in .js files. */ // "jsx": "preserve", /* specify jsx code generation: 'preserve', 'react-native', or 'react'. */ // "declaration": true, /* generates corresponding '.d.ts' file. */ // "declarationmap": true, /* generates a sourcemap for each corresponding '.d.ts' file. */ "sourcemap": true, /* generates corresponding '.map' file. */ // "outfile": "./", /* concatenate and emit output to single file. */ "outdir": "./js", /* redirect output structure to the directory. */ // "rootdir": "./", /* specify the root directory of input files. use to control the output directory structure with --outdir. */ // "composite": true, /* enable project compilation */ // "incremental": true, /* enable incremental compilation */ // "tsbuildinfofile": "./", /* specify file to store incremental compilation information */ // "removecomments": true, /* do not emit comments to output. */ // "noemit": true, /* do not emit outputs. */ // "importhelpers": true, /* import emit helpers from 'tslib'. */ // "downleveliteration": true, /* provide full support for iterables in 'for-of', spread, and destructuring when targeting 'es5' or 'es3'. */ // "isolatedmodules": true, /* transpile each file as a separate module (similar to 'ts.transpilemodule'). */ /* strict type-checking options */ "strict": true, /* enable all strict type-checking options. */ // "noimplicitany": true, /* raise error on expressions and declarations with an implied 'any' type. */ // "strictnullchecks": true, /* enable strict null checks. */ // "strictfunctiontypes": true, /* enable strict checking of function types. */ // "strictbindcallapply": true, /* enable strict 'bind', 'call', and 'apply' methods on functions. */ // "strictpropertyinitialization": true, /* enable strict checking of property initialization in classes. */ // "noimplicitthis": true, /* raise error on 'this' expressions with an implied 'any' type. */ // "alwaysstrict": true, /* parse in strict mode and emit "use strict" for each source file. */ /* additional checks */ // "nounusedlocals": true, /* report errors on unused locals. */ // "nounusedparameters": true, /* report errors on unused parameters. */ // "noimplicitreturns": true, /* report error when not all code paths in function return a value. */ // "nofallthroughcasesinswitch": true, /* report errors for fallthrough cases in switch statement. */ /* module resolution options */ // "moduleresolution": "node", /* specify module resolution strategy: 'node' (node.js) or 'classic' (typescript pre-1.6). */ // "baseurl": "./", /* base directory to resolve non-absolute module names. */ // "paths": {}, /* a series of entries which re-map imports to lookup locations relative to the 'baseurl'. */ // "rootdirs": [], /* list of root folders whose combined content represents the structure of the project at runtime. */ // "typeroots": [], /* list of folders to include type definitions from. */ // "types": [], /* type declaration files to be included in compilation. */ // "allowsyntheticdefaultimports": true, /* allow default imports from modules with no default export. this does not affect code emit, just typechecking. */ "esmoduleinterop": true /* enables emit interoperability between commonjs and es modules via creation of namespace objects for all imports. implies 'allowsyntheticdefaultimports'. */ // "preservesymlinks": true, /* do not resolve the real path of symlinks. */ /* source map options */ // "sourceroot": "", /* specify the location where debugger should locate typescript files instead of source locations. */ // "maproot": "", /* specify the location where debugger should locate map files instead of generated locations. */ // "inlinesourcemap": true, /* emit a single file with source maps instead of having a separate file. */ // "inlinesources": true, /* emit the source alongside the sourcemaps within a single file; requires '--inlinesourcemap' or '--sourcemap' to be set. */ /* experimental options */ // "experimentaldecorators": true, /* enables experimental support for es7 decorators. */ // "emitdecoratormetadata": true, /* enables experimental support for emitting type metadata for decorators. */ } }
⑤ 编写typescript文件sample.ts
// 定义类 class person { // 成员变量 name: string; age: number; // 构造函数 constructor(name: string, age: number) { this.name = name; this.age = age; } // 成员方法 say(): void { console.log('姓名:' + this.name + ',年龄:' + this.age); } } // 实例化 let person = new person('temptation', 18); person.say();
⑥ 点击"终端"----->运行生成任务(快捷键:ctrl + shift + b),选择tsc:监视 - tsconfig.json,一会儿就会生成js目录以及对应ts文件的js文件
生成的javascript文件内容如下:
"use strict"; // 定义类 var person = /** @class */ (function () { // 构造函数 function person(name, age) { this.name = name; this.age = age; } // 成员方法 person.prototype.say = function () { console.log('姓名:' + this.name + ',年龄:' + this.age); }; return person; }()); // 实例化 var person = new person('temptation', 18); person.say(); //# sourcemappingurl=sample.js.map
⑦ 调试typescript文件。在需要中断的位置,使用f9设置断点。再点击f5启动调试即可。f10单步调试。f11单步走入。
⑧ html文件不能直接使用typescript,需要使用typescript自动编译生成的javascript文件。
可以在vscode中安装open in browser这个插件,运行时,在html文件中右键找到open in default/other browser,打开相应的浏览器。在浏览器的控制台看到执行结果
<!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>typescript使用示例</title> </head> <body> <script src="js/sample.js"></script> </body> </html>
推荐阅读
-
【原】无脑操作:Gitblit服务器搭建及IDEA整合Git使用
-
【原】无脑操作:Webstorm集成Git/Github
-
【原】无脑操作:TypeScript环境搭建
-
Linux环境搭建及基础操作
-
Linux下Android开发环境搭建的操作方法
-
Linux环境下搭建php开发环境的操作步骤
-
【原】无脑操作:Chrome浏览器安装Vue.js devtool
-
【原】无脑操作:ElasticSearch学习笔记(01)
-
【原】无脑操作:IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf实现基础认证权限
-
【原】无脑操作:Centos 7后台运行及终止jar包程序