何时应使用TS在Angular 2+中导入类型?

时间:2018-07-23 10:08:41

标签: angular typescript definitelytyped

此问题与使用TypeScript的Angular v.2 +有关。

我什么时候应该将键入内容作为单独的导入内容导入?-如何区分这两种情况?

在特定情况下,我根据建议here

安装了以下两个依赖项
 ngOnInit() { (<HTMLElement>document.querySelector('.pagemode')).style.z-index = 1;}

如果我错了,请纠正我:

  1. 使用TypeScript的Angular在没有类型的情况下仍然可以工作     导入后,IDE中有关方法的BUT提示将无法运行     输入的类型?
  2. 许多库没有类型的单独导入,因为类型是库本身的一部分(基于解释here)?

1 个答案:

答案 0 :(得分:1)

TypeScript可让您拥有声明文件,这些文件可让您描述用(例如)纯JavaScript编写的代码的形状。因此,通过引用这些文件之一,您可以确切地告诉TypeScript如何假定您正在使用的JavaScript代码或库是“类型化”的。当然,这意味着声明文件需要仔细编写并与您使用的JavaScript库保持同步。

我什么时候应该将键入内容作为单独的导入内容导入?

jquery, lodash这样的一些javascript库是使用平面javascript编写的,或者不提供使用typescript的支持,而DefinitelyTyped是单独的项目,可以为像jquery,lodash这样的项目提供打字支持。

带有TypeScript的Angular在没有导入类型的情况下仍然可以工作,但是在IDE中有关方法的提示在没有导入类型的情况下无法工作

键入不仅仅是智能,例如,防止传递错误的参数

$([1,2,3,4]) // for example the selector type is string not array 

许多库没有类型的单独导入,因为类型是库本身的一部分

Angular是使用打字稿的一个很好的例子。

当程序员面对未使用文档中未提及的新lib时,如何确定他是否需要另外提取类型?(意见)

声明文件是库/框架作者打字稿团队支持react的工作,例如,因为此要求支持jsx,vuejs在那里更新了核心以支持打字稿,正如我所说的那样,它支持打字稿或打字在作者的工作中,有时他们出于任何原因都不希望您支持打字,如果您不满意与正在查找的库相关的类型,则需要检查DefinitelyTyped如果需要的话,可以自行声明文件。

选中此What is “DefinitelyTyped”?