我正在运行TypeScript 2.0.3,配置为"target": "es2015",.我开始了
/// <reference path="../../node_modules/@types/node/index.d.ts" />
import assert = require('assert');
Run Code Online (Sandbox Code Playgroud)
但是在Visual Studio中,标记了一个工具提示,Import with 'require' cannot be used when targeting ECMAScript 6 or higher.然后我尝试了:
/// <reference path="../../node_modules/@types/node/index.d.ts" />
import {assert} from 'assert';
Run Code Online (Sandbox Code Playgroud)
哪个生成 Error TS2305 Module '"assert"' has no exported member 'assert'.
我也尝试过:
/// <reference path="../../node_modules/@types/node/index.d.ts" />
import assert from 'assert';
Run Code Online (Sandbox Code Playgroud)
哪个生成 Error TS1192 Module '"assert"' has no default export.
我npm install从我的示例项目的根文件夹运行,使用脚本来构建它package.json.
构建需要prepublish脚本中当前的一些转换步骤,但是npm版本4显示一个警告即将发生重大变化,这使我相信新的 prepare构建事件脚本更具有未来性.
C:\code\antlr4ts-json>npm install
npm WARN prepublish-on-install As of npm@5, `prepublish` scripts will run only for `npm publish`.
npm WARN prepublish-on-install (In npm@4 and previous versions, it also runs for `npm install`.)
npm WARN prepublish-on-install See the deprecation note in `npm help scripts` for more information.
...
Run Code Online (Sandbox Code Playgroud)
不幸的是,只需将脚本移动prepublish到prepare中断向后兼容性:如果某人正在npm install使用npm@3,prepare则会默默忽略构建步骤.
升级构建时脚本的最佳做法是什么?理想情况下,我想更新我的,package.json以便npm install适用于任何npm …
几年前,有一个名为PackageManagement(又名 OneGet)的 Microsoft 包管理器,它似乎基于 PowerShell 命令约定,并且是可扩展的。
最近,微软推出了另一个名为winget的包管理器工具,该工具仍被视为预发布版本。似乎没有使用 PowerShell 约定。
这两者之间是什么关系呢?
WinGet 是否会取代 OneGet,或者是否会存在某种互操作性?
我是一个很长一段时间(15年以上)的Visual Studio用户,我很高兴能够学习Typescript和新的更精简的Visual Studio Code.我一直在尝试像VS一样设置VSCode,当你点击F5时,它转换为Javascript并启动调试器.
我发现在保存时触发它的帖子,或使用另一个快捷方式(通过tasks.json运行) - 但我真的很惊讶没有办法在这样的基本命令上执行此操作,除非我真的失踪一些令人尴尬的事情.
在这一点上,我只是尝试使用直接从Microsoft检出的"Hello World"欢迎样本,其中有一个手动步骤tsc --sourcemap greeter.ts.我只是希望在我开始运行/调试之前,在VS中自动发生任何需要转换的文件.
有谁知道如何做到这一点?谢谢.
从TypeScript 1.8切换到2.0.3一些实现Iterator的代码已经开始生成一条新消息: 错误TS2322:输入'{done:true; }'不能赋值为'IteratorResult'.类型'{done:true; }". 虽然修复很容易(并且向后兼容),但我想了解它为什么会发生变化......
至少在TypeScript 1.8下,IteratorResult使用value属性optional来定义.从lib.es6.d.ts for 1.8:
interface IteratorResult<T> {
done: boolean;
value?: T;
}
Run Code Online (Sandbox Code Playgroud)
声明如下:
interface IteratorResult<T> {
done: boolean;
value: T;
}
Run Code Online (Sandbox Code Playgroud)
凭借严格的空检查关,供应的{ done: true, value: undefined }解决方法是显而易见的,但在那里一些很好的理由让value强制在2.0吗?
更新:我现在发现,当我打开严格的空检查时,这会变得更糟,显式使用undefined(如上所述)也不起作用.最终我采取了这个:
return { done: true, value: undefined } as any as IteratorResult<T>;
Run Code Online (Sandbox Code Playgroud)
作为参考,这是生成错误的代码示例:
class HashMapKeyIterable<K,V> implements Iterator<K>, IterableIterator<K> {
private _bucket: HashMapEntry<K,V>[];
private _index: number;
constructor( private _buckets : Iterator<HashMapEntry<K,V>[]> ){
this._bucket = undefined;
this._index …Run Code Online (Sandbox Code Playgroud) 我有一组测试DLL,它们是通过Start-Process命令通过OpenCover.Console.exe的Powershell脚本运行的。
我-returntargetcode设置了标志
执行后,我检查$lastexitcode和$?。他们一直都分别返回1和True。即使测试失败。
$lastexitcode当所有测试通过时不应该为0,而在所有测试失败时是否应该为1?