【问题标题】:When should I import typings in Angular 2+ with TS?我什么时候应该在 Angular 2+ 中使用 TS 导入类型?
【发布时间】:2023-03-19 16:06:01
【问题描述】:

这个问题与带有 TypeScript 的 Angular v.2+ 有关。

我应该何时将类型作为单独的导入以及何时不需要 - 我如何区分这两种情况?

一个特例,我按照here的推荐安装了以下两个依赖

npm install lodash --save
npm install @types/lodash --save-dev   // <<< Do I need this as separate import or not ?!

如果我错了,请纠正我:

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

【问题讨论】:

    标签: angular typescript definitelytyped


    【解决方案1】:

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

    我应该何时将类型作为单独的导入以及何时不需要

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

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

    打字不仅仅是智能感知,例如防止传递错误的参数

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

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

    Angular 是使用 typescript 的一个很好的例子。

    当程序员面临要使用的新库而没有在文档中具体提及时如何决定他是否需要单独提取类型?(意见)

    声明文件是库/框架作者 typescript 团队的工作,以支持react,例如因为这需要支持 jsx,vuejs 更新了核心以支持 typescript,正如我所说,这支持 typescript 或键入作者的工作,有时他们出于任何原因不想支持打字,您需要检查DefinitelyTyped,如果您不了解与您正在寻找的库相关的类型,您需要编写声明文件如果你需要,你自己。

    检查这个What is “DefinitelyTyped”?

    【讨论】:

    • 我更新了问题定义以更清楚地强调请求。你能相应地更新你的答案吗?谢谢
    • 此语句与导入类型 import * as _ from 'lodash' 无关;我们清楚了吗?
    • @zaggi 希望我能帮上忙,编码愉快
    • 感谢您的修订。您是否还可以评论一下-“我如何区分这两种情况”,即当程序员面对要使用的新库而没有在文档中具体提及时如何决定他/她是否需要单独提取类型?
    • @zaggi 如果您的问题是答案,您可以考虑接受我的答案吗? ,谢谢
    猜你喜欢
    • 2016-01-09
    • 2011-09-03
    • 2010-12-30
    • 2019-07-11
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 2018-06-26
    相关资源
    最近更新 更多