有很多IDE对TypeScript有很好的支持,比如Visual Studio Code、WebStorm、Atom和Sublime。
严格的零检查
形式为cannot read property 'x' of undefined或undefined is not a function的运行时错误通常是由JavaScript代码中的错误引起的。开箱即用的TypeScript已经降低了发生此类错误的可能性,因为不能使用TypeScript编译器不知道的变量(any类型变量的属性除外)。尽管仍然有可能错误地使用设置为undefined的变量。然而,在TypeScript的2.0版本中,你可以通过使用不可为空的类型来消除这些类型的错误。这工作如下:
启用了严格的空检查(--strictNullChecks编译器标志),TypeScript编译器不允许将undefined分配给变量,除非您显式声明它是可空类型。例如,let x : number = undefined将导致编译错误。这完全符合类型理论,因为undefined不是数字。可以将x定义为number的和类型,并将undefined定义为纠正这一点:let x : number | undefined = undefined。
let x: number | undefined;if (x !== undefined) x += 1; // this line will compile, because x is checked.x += 1; // this line will fail compilation, because x might be undefined.
定义可以采取的最简单形式是允许以任何方式使用标识符。例如,当使用Lodash时,单行定义文件declare var _ : any将允许您在_上调用您想要的任何函数,但是,当然,您仍然可以犯错误:_.foobar()将是合法的TypeScript调用,但当然,在运行时是非法调用。如果您想要适当的类型支持和代码完成,您的定义文件需要更准确(参见土豆泥定义的示例)。