我们可以在TypeScript中声明一个类型化的元组,例如,使用类型注释[string, number].这意味着一个包含2个元素的数组,其中第一个元素需要是一个字符串,第二个元素需要一个数字.
我们还可以声明只读数组,ReadonlyArray<string>这意味着只读数组的字符串.
现在我想在第一个例子中有一个只读元组,但我希望它像第二个例子中那样是只读的.我该如何申报?
如果键是字符串,Dart中的Map类是否有办法忽略大小写?
例如.
var map = new Map<String, int>(/*MyComparerThatIgnoresCase*/);
map["MyKey"] = 42;
var shouldBe42 = map["mykey"];
Run Code Online (Sandbox Code Playgroud)
在C#中,Dictionary构造函数采用类似上面注释的比较器.Dart中这样做的规范方法是什么?
我正在尝试使用es6模块语法重新导出变量,然后更改它并查看最终导入中反映的更改.但它没有按预期工作.请参阅以下示例:
a.ts
export var a = 1;
export function changeA() { a = 2; }
Run Code Online (Sandbox Code Playgroud)
b.ts
export * from './a';
Run Code Online (Sandbox Code Playgroud)
c.ts
import { a, changeA } from './b';
console.log(a); // 1
changeA();
console.log(a); // Expected 2 but get 1
Run Code Online (Sandbox Code Playgroud)
tsconfig.json
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"outDir": "out"
}
}
Run Code Online (Sandbox Code Playgroud)
运行结果:
$ node out/c.js
1
1
Run Code Online (Sandbox Code Playgroud)
我希望最终的console.log打印2以反映更新,但事实并非如此.但是,如果我用babel编译相同的例子,它就可以了.是否重新导出可变变量绑定根本不适用于打字稿,或者我只是做错了什么?
有没有办法让Webstorm在不打开所有文件的情况下连续报告项目范围内的所有打字稿错误?出于性能原因,我希望使用语言服务来完成它,而不是通过运行 tsc 的任务来完成。
我知道 Webstorm 使用 Dart 分析服务器显示了 Dart 项目中的所有问题,我认为它类似于 Typescript 语言服务。因此,基本上我正在寻找一种方法,使 Webstorm(或 vscode)在报告项目范围错误方面与 TypeScript 的工作方式与 Dart 项目的工作方式相同。
2016年9月9日编辑:
Webstorm 中的一个小例子:
添加这些文件:
测试1.ts
export const foo:number = 5;
Run Code Online (Sandbox Code Playgroud)
测试2.ts
import {foo} from './test1';
const bar:string = foo;
Run Code Online (Sandbox Code Playgroud)
现在将 test1.ts 的内容更改为:
export const foo:string = "";
Run Code Online (Sandbox Code Playgroud)
保存 test1.ts。