用VsCode编辑TypeScript的实现方法


Posted in Javascript onMay 07, 2020

TypeScript是Javascript的超集,它提供了类、模块、接口来帮助你构建强大的组件。

用VsCode编辑TypeScript的实现方法

VS Code下TypeScript支持在两种不同的模式下运行:

文件范围:在这个模式下,VsCode打开的TypeScript文件被视为独立单元。只要A.ts没有明确引用b.ts(使用///引用目录或额外模块),那么两个文件就没有通用项目上下文。

显式项目:一个typescript项目通过一个tsconfig.json被定义。该文件指定ts项目根目录,列出了属于项目的文件还有编译选项。更多有关tsconfig.json细节。

小提示:我们建议你使用显式项目模式范围代替文件范围模式。由于显式项目模式列出了属于一个项目语言的所有文件,因此,像查找所有引用Shift+F12仅考虑项目范围不是文件范围。

tsconfig.json

通常,任何一个新项目的第一步是添加一个tsconfig.json文件。它定义了ts项目设置例如编译选项和包括的文件。

想要做到这点,打开你想存储资源的文件夹中添加一个叫tsconfig.json的文件。然后智能感知就会生效。

用VsCode编辑TypeScript的实现方法

一个tsconfig.json例子,表明是es5、commonJs模块、soumap。

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "sourceMap": true
  }
}

现在,当你创建一个.ts文件作为项目的一部分我们将会提供丰富的编辑体验和语法验证。

将typescript转换为JavaScript

vscode通过任务运行器与tsc集成。我们能够使用这个工具来讲ts文件转换成js文件。让我们浏览你一个简单的typescript hello world程序。

步骤1:创建一个简单的Ts文件

在空文件夹上打开vscode然后创建一个helloworld.ts文件,将一下代码替换到文件中。

class Startup {
  public static main(): number {
    console.log('Hello World');
    return 0;
  }
}

Startup.main();

步骤2:创建task.json

第一步是建立task配置,使用ctrl+shift+p打开命令调色板,然后输入configure task Runner,按回车选择。

这展示了一个带有模板的选择框。

用VsCode编辑TypeScript的实现方法

选择typescript-tsconfig.json。这在工作区.vscode文件夹创建一个tasks.json文件。

task.json文件内容看起来像这样:

{
  // See https://go.microsoft.com/fwlink/?LinkId=733558
  // for the documentation about the tasks.json format
  "version": "0.1.0",
  "command": "tsc",
  "isShellCommand": true,
  "args": ["-p", "."],
  "showOutput": "silent",
  "problemMatcher": "$tsc"
}

小提示:虽然模板可以帮助生成通用配置设置,但智能提示也是对task.json文件有效。使用ctrl+space可以看到可用的设置。

在封面下,我们让tsc作为一个外部的任务运行器,它仅暴露一个任务:把typescript编译成javascript文件。命令是:tsc -p .

小提示:如果你没有安装typescript编译器,你可以点击这。

步骤3:运行构建任务

由于这是文件中唯一的任务,你可以执行它通过按ctrl+shift+b(运行构建任务)。与此同时你将看到一个额外的helloword.js文件展示在文件列表中。

这个typescript文件没有任何编译问题,所以helloworld.js和helloworld.js.map文件被创建。

如果node.js已经被安装,你能运行你的helloworld例子通过打开一个终端然后运行

node HelloWorld.js

小提示:你也能运行这个程序使用vscode的运行/调试特性,关于在vscode中运行和调试node应用的细节,在这查看。

步骤4:回顾构建问题

很不幸,大多数build并不顺利,结果通常带有一些额外的信息。举个例子,如果有一个错误在typescript文件中,你可能从tsc中得到下面的输出:

HelloWorld.ts(3,17): error TS2339: Property 'logg' does not exist on type 'Console'.

这将显示在输出窗口中(可以使用ctrl+shift+u打开),我们为你解析这个输出然后在任务栏中高亮显示这个问题。

用VsCode编辑TypeScript的实现方法

你可以点击那个图标,得到问题列表并定位他们。

用VsCode编辑TypeScript的实现方法

你也可以使用快捷键cril+shift+m打开这个列表。

小提示:任务为许多丰富的行为提供支持。有关如何配置他们的更多信息,请查看“任务”话题。

跳转标记&展示所有标记

ctrl+shift+o:列出所有定义符号关于当前打开和允许您在其中导航。

ctrl+T:让你搜索当前项目中或文件范围中所有定义的标记。你需要有一个typescript文件打开在编辑器中。

格式化代码

shift+alt+f:格式化整个文档。ctrl+k ctrl+f:格式化当前选择的资源代码。

JSDoc 支持

VsCode 提供了JSDoc对typescript的支持。除了语法上色,我们也会帮助你键入JsDoc注释。键入/**他将自动插入结束符*/在jsDoc块中输入回车将缩进下一行并自动插入*。

JavaScript Source Map 支持

typescript调试支持JavaScript source map.在项目运行配置文件launch.json中将sourceMaps设为true。另外,你可以制定一个typescript文件使用program属性。

想要生成你的typescript文件的source maps,编译--sourcemap选项或设置tsconfig.json文件中sourcemap属性为true。行内资源地图也是被支持的(一个内容被存储在url而不是一个单独的文件的资源地图),虽然还没有支持行内资源。

为生成文件设置一个不同的outFiles

如果被生成的(已经折叠)的JavaScript文件没有在它源文件旁边,你能通过在launch配置中的outfiles属性帮助vs代码调试器定位他们。

无论何时你在源代码中设置了断点,vscode 会尝试通过在oufiles中glob模式指定的文件查找生成的资源。

隐藏生成的Javascript文件

当你使用typescript时,你通常不想看见生成的JavaScript文件在资源管理器或者搜索结果中。vscode提供了过滤器功能,files.exclude工作区设置(文件->引用->设置)你能简单的创建一个表达式去隐藏这些生成的文件。

"**/*.js": { "when": "$(basename).ts"}

这个模式将匹配任何JavaScript文件(**/*.js),但仅仅是当一个同名的typescript文件存在。文件管理器将会不在展示生成的JavaScript资源如果被编辑在相同的位置。

用VsCode编辑TypeScript的实现方法

想要排除从.ts和.tsx资源文件生成的JavaScript文件,使用下面表达式:

"**/*.js": { "when": "$(basename).ts" },
"**/**.js": { "when": "$(basename).tsx" }

这是一个小技巧,搜索glob模式被使用是关键,上面的设置使用两种不同的glob模式来提供两个唯一键,但搜索结果相同。

混合的typscript和JavaScript项目

现在可以有一个混淆的ts和js项目了,想要让JavaScript在ts项目中存在,你能设置allowJs属性为true在tsconfig.json中。

小提示:tsc编译器不会自动检测jsconfig.json文件的存在。使用-p参数去让tsc使用你的jsconfig.json文件。例子,tsc -p jsconfig.json。

使用新版本的typescript

vscode 附带了最近稳定版本的typescript语言服务,他可能与安装在当前计算机的和工作区的typescript版本不匹配。当你浏览一个ts或js文件的时候,typescript 当前有效版本展示在状态栏上。

用VsCode编辑TypeScript的实现方法

当vscode检测到tsc版本与活动的ts语言服务版本不同时,一个消息会展示出来“version mismatch! global tsc(2.1.5)!=vscode's language service(2.2.1).inconsistent compiler errors might occur".这个消息是友好的,目的是提醒用户编译器与活动的语言服务可能的差异。

你可以隐藏这个检查使用工作区设置typescript.check.tscVersion,如果你点击了详细广告条中Dont Check Again ,会设置你的用户设置fasle。

"typescript.check.tscVersion": false

另外的选项是在你的工作区中安装匹配的typescript版本(npm install --save-dev typscript),或者当前电脑全局安装(npm install -g typescript)。我们建议本地安装typescript从而避免与其他ts项目交互问题。

小提示:逍遥得到指定版本的ts,使用@version。举个ts2.2.1的例子,你将使用npm install --save-dev typescript@2.2.1.想要预览下一版本的ts,运行npm install --save-dev typescript@next.

当vscode在后续编译版本中更新typescript语言服务时,你可能再次看到不匹配的消息,让你更新你的typescript版本。

想要默认使用一个不同版本的typescript版本,在你的用户设置中配置typescript.tsdk,指出一个包含tsserver.js文件的目录。你能使用npm list -g typescript命令找到typescript安装位置。tsserver.js文件通常在lib文件夹中。

举个例子

{
  "typescript.tsdk": "/usr/local/lib/node_modules/typescript/lib"
}

如果你的工作区有一个特殊的typescrit版本,你能在工作区的ts版本和vscode默认使用的版本切换,方法是在工作区中打开typescript或js文件,然后单击状态栏中的typescript版本号。一个消息框将会出现,询问你要使用那个版本的ts代码。

用VsCode编辑TypeScript的实现方法

切换ts版本或改变typescript.tsdk文件之后,必须重启vscode才会生效。你能切换回vscode附带的ts版本。

Typescript 扩展

vscode提供了许多ts开箱即用的特性。除了内置的内容外,你可以安装扩展以实现更强大的功能

用VsCode编辑TypeScript的实现方法

原文地址:https://code.visualstudio.com/Docs/languages/typescript

到此这篇关于用VsCode编辑TypeScript的实现方法的文章就介绍到这了,更多相关VsCode编辑TypeScript内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
关于Blog顶部的滚动导航条代码
Sep 25 Javascript
js 处理URL实用技巧
Nov 23 Javascript
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
Apr 27 Javascript
JQuery中判断一个元素下面是否有内容或者有某个标签的判断代码
Feb 02 Javascript
javascript检查表单数据是否改变的方法
Jul 30 Javascript
如何判断元素是否为HTMLElement元素
Dec 06 Javascript
javascript实现文字无缝滚动
Dec 27 Javascript
bootstrap laydate日期组件使用详解
Jan 04 Javascript
js下载文件并修改文件名
May 08 Javascript
vue打包后显示空白正确处理方法
Nov 01 Javascript
Vue实现左右菜单联动实现代码
Aug 12 Javascript
图文讲解用vue-cli脚手架创建vue项目步骤
Feb 12 Javascript
JavaScript交换变量的常用方法小结【4种方法】
May 07 #Javascript
原生JavaScript创建不可变对象的方法简单示例
May 07 #Javascript
Javascript幻灯片播放功能实现过程解析
May 07 #Javascript
基于javascript实现日历功能原理及代码实例
May 07 #Javascript
Vue简单实现原理详解
May 07 #Javascript
angular组件间通讯的实现方法示例
May 07 #Javascript
基于better-scroll 实现歌词联动功能的代码
May 07 #Javascript
You might like
PHP安全技术之 实现php基本安全
2010/09/04 PHP
Trying to clone an uncloneable object of class Imagic的解决方法
2012/01/11 PHP
Yii+upload实现AJAX上传图片的方法
2016/07/13 PHP
一步一步制作jquery插件Tabs实现过程
2010/07/06 Javascript
整理8个很棒的 jQuery 倒计时插件和教程
2011/12/12 Javascript
Javascript简单实现可拖动的div
2013/10/22 Javascript
浅析javascript 定时器
2014/12/23 Javascript
使用CDN和AJAX加速WordPress中jQuery的加载
2015/12/05 Javascript
nodeJS实现简单网页爬虫功能的实例(分享)
2017/06/08 NodeJs
基于vue2.0实现的级联选择器
2017/06/09 Javascript
webpack构建vue项目的详细教程(配置篇)
2017/07/17 Javascript
jQuery EasyUI的TreeGrid查询功能实现方法
2017/08/08 jQuery
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
2018/04/17 jQuery
vue webpack实用技巧总结
2018/04/24 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
2018/11/27 Javascript
微信小程序 拍照或从相册选取图片上传代码实例
2019/08/28 Javascript
Python选择排序、冒泡排序、合并排序代码实例
2015/04/10 Python
Python2.x与Python3.x的区别
2016/01/14 Python
解决python使用open打开文件中文乱码的问题
2017/12/29 Python
python 时间信息“2018-02-04 18:23:35“ 解析成字典形式的结果代码详解
2018/04/19 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
Python3中关于cookie的创建与保存
2018/10/21 Python
python爬虫之自制英汉字典
2019/06/24 Python
浅谈Python小波分析库Pywavelets的一点使用心得
2019/07/09 Python
CAT鞋美国官网:CAT Footwear
2017/11/27 全球购物
德国帽子专家:Hutshopping
2019/11/03 全球购物
实习教师自我鉴定
2013/09/27 职场文书
食堂个人先进事迹
2014/01/22 职场文书
市场总经理岗位职责
2014/04/11 职场文书
集中采购方案
2014/06/10 职场文书
市场营销策划方案
2014/06/11 职场文书
篮球赛口号
2014/06/18 职场文书
2015年化工厂工作总结
2015/05/04 职场文书
MySQL Threads_running飙升与慢查询的相关问题解决
2021/05/08 MySQL
方法汇总:Python 安装第三方库常用
2022/04/26 Python