我在这段代码的第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
}
}
答案 0 :(得分:6)
这些类型是String Literal Types,它们在联合类型的上下文中很有用,特别是在discriminated unions中可用于模拟函数式编程语言中的模式匹配。