为什么这不是语法/编译时错误?

Rei*_*ica 1 typescript

我意外地输入:,而不是=在这段代码的第2行.

为什么这个有效的打字稿?冒号不应该期望属性定义上的已知类型声明吗?

我确信TS规范中的某个地方允许它,但目的是什么?

export class CategoriesService {
  private _url : "http://localhost:3000/someurl"; // ???????????

  constructor(private http: Http) {}

  getData(): Observable<Category[]> {
    return this.http.get(this._url).map(res => res.json()); //fails here, as _url is undefined
  }
}
Run Code Online (Sandbox Code Playgroud)

Wic*_*koo 6

这些类型是字符串文字类型,它们在联合类型的上下文中很有用,特别是在可用于模拟函数式编程语言中的模式匹配的区分联合中.