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

时间:2018-04-30 12:39:55

标签: 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
  }
}

1 个答案:

答案 0 :(得分:6)

这些类型是String Literal Types,它们在联合类型的上下文中很有用,特别是在discriminated unions中可用于模拟函数式编程语言中的模式匹配。