gpt4 book ai didi

typescript - 在惯用的 Typescript 中,我应该始终声明变量的类型,还是应该更多地依赖类型推断?

转载 作者:搜寻专家 更新时间:2023-10-30 20:36:03 24 4
gpt4 key购买 nike

起初,我们的团队发现自己编写了很多这样的代码,因为我们已经习惯了使用 ActionScript 等语言。

var arrayOfFoo : Array<Foo> = new Array<Foo>();
//Then, sometime later:
var someFoo : Foo = arrayOfFoo[0];
someFoo.someFooMethod();

这很好,但可以通过更多地依赖 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();

Typescript 非常擅长类型推断。如果我从赋值的左侧删除类型,编译器仍然知道该对象是什么类型,并且如果我尝试对推断类型不能做的变量做一些事情,编译器仍然会给出编译错误。

我喜欢它读取的代码更少,输入的代码更少。声明类型的示例开始让我觉得“多余”,但我担心我们以后可能会给自己带来麻烦。我很好奇社区推荐什么,如果有的话。

最佳答案

我为我的项目做的不是在可以推断类型定义的任何地方,因为(正如你已经说过的)它是多余的。

我目前没有做的(但我真的很想做)是使用 --noImplicitAny any 标志进行编译。

启用该标志后,您将收到无法推断类型的错误,这非常有用!你可能想看看那个!请参阅下面的示例。

下面的代码在使用 tsc --noImplicitAny tst.ts 编译时会给出三个错误:

var arr = [];
var x = null;
var a: string[] = [];
var s = a["foo"]

tst.ts(1,11):错误 TS7015:数组文字隐含地具有扩展的“任何”类型。

tst.ts(2,5):错误 TS7005:变量“x”隐式具有“任意”类型。

tst.ts(5,11):错误 TS7017:对象类型的索引签名隐式具有“任何”类型。

这样当你(不小心)做一些奇怪的事情时会报错。

关于typescript - 在惯用的 Typescript 中,我应该始终声明变量的类型,还是应该更多地依赖类型推断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24559636/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com