Tay*_*tay 8 idiomatic typescript
起初,我们的团队发现自己编写了大量这样的代码,因为这就是我们在ActionScript等语言中习惯使用的代码.
var arrayOfFoo : Array<Foo> = new Array<Foo>();
//Then, sometime later:
var someFoo : Foo = arrayOfFoo[0];
someFoo.someFooMethod();
Run Code Online (Sandbox Code Playgroud)
这很好,但可以通过更多地依赖于Typescript的类型推断来简化它:
//No need to declare the type ": Array<Foo>" here:
var arrayOfFoo = new Array<Foo>();
//Again, no need to declare that someFoo is a Foo
var someFoo = arrayOfFoo[0];
someFoo.someFooMethod();
Run Code Online (Sandbox Code Playgroud)
打字稿在类型推断方面非常擅长.如果我从赋值的左侧删除类型,编译器仍然知道该对象是什么类型,并且如果我尝试对推断类型不能执行的变量执行某些操作,则仍会给出编译错误.
我喜欢它读取的代码更少,键入的代码更少.声明类型的例子开始让我觉得"多余",但我担心我们可能会在以后为自己设置麻烦.我很好奇社区推荐的内容,如果有的话.
我为我的项目所做的是在可以推断时将类型定义放在任何地方,因为(正如你已经说过的那样)它是多余的.
我目前没有做什么(但我真的想这样做)正在编译--noImplicitAny任何标志.
启用该标志后,您将收到一个错误,它无法推断出真正有用的类型!你可能想看一下!请参阅下面的示例.
使用tsc --noImplicitAny tst.ts编译时,下面的代码将给出三个错误:
var arr = [];
var x = null;
var a: string[] = [];
var s = a["foo"]
Run Code Online (Sandbox Code Playgroud)
tst.ts(1,11):错误TS7015:Array Literal隐式地具有来自扩展的"任何"类型.
tst.ts(2,5):错误TS7005:变量'x'隐式具有'any'类型.
tst.ts(5,11):错误TS7017:对象类型的索引签名隐式具有"任何"类型.
这种方式当你做一些奇怪的事情(意外)时会出错.
| 归档时间: |
|
| 查看次数: |
2673 次 |
| 最近记录: |