小编Jon*_*llo的帖子

如何在TypeScript中声明只读数组元组?

我们可以在TypeScript中声明一个类型化的元组,例如,使用类型注释[string, number].这意味着一个包含2个元素的数组,其中第一个元素需要是一个字符串,第二个元素需要一个数字.

我们还可以声明只读数组,ReadonlyArray<string>这意味着只读数组的字符串.

现在我想在第一个例子中有一个只读元组,但我希望它像第二个例子中那样是只读的.我该如何申报?

typescript

14
推荐指数
4
解决办法
9822
查看次数

使用String键进行Dart Map,与ignore case进行比较

如果键是字符串,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中这样做的规范方法是什么?

dart

8
推荐指数
2
解决办法
1588
查看次数

Typescript es6模块重新导出可变变量绑定

我正在尝试使用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编译相同的例子,它就可以了.是否重新导出可变变量绑定根本不适用于打字稿,或者我只是做错了什么?

javascript typescript ecmascript-6

6
推荐指数
1
解决办法
1096
查看次数

在 webstorm 中显示项目范围的 TypeScript 问题/错误

有没有办法让Webstorm在不打开所有文件的情况下连续报告项目范围内的所有打字稿错误?出于性能原因,我希望使用语言服务来完成它,而不是通过运行 tsc 的任务来完成。

我知道 Webstorm 使用 Dart 分析服务器显示了 Dart 项目中的所有问题,我认为它类似于 Typescript 语言服务。因此,基本上我正在寻找一种方法,使 Webstorm(或 vscode)在报告项目范围错误方面与 TypeScript 的工作方式与 Dart 项目的工作方式相同。

2016年9月9日编辑:

Webstorm 中的一个小例子:

  • 文件>新建项目>空项目
  • 配置 Webstorm > 首选项 > 语言和框架 > TypeScript
  • 检查使用 TypeScript 服务(实验性)
  • 选中启用 TypeScript 编译器
  • 检查跟踪更改
  • 范围:项目文件
  • 选择手动设置选项
  • 命令行选项:--noEmit

添加这些文件:

测试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)
  • 关闭所有文档并退出 Webstorm。
  • 重新启动网络风暴。
  • 打开文件 test1.ts。
  • 检查“当前错误”和“项目错误”窗格,它们都是空白的。
  • 按“全部编译”按钮。
  • 当前错误:空白(为什么?)
  • 项目错误:test2.ts > 错误:(3, 7) TS2322:类型“数字”无法分配给类型“字符串”。

现在将 test1.ts 的内容更改为:

export const foo:string = "";
Run Code Online (Sandbox Code Playgroud)

保存 test1.ts。

  • “当前错误”和“项目错误”都与以前相同。 …

webstorm typescript visual-studio-code

5
推荐指数
1
解决办法
7054
查看次数