@material-ui/core 和@types/material-ui 的关系是什么?

IT技术 reactjs typescript material-ui npm-install
2021-05-07 15:48:52

在这里,我看到了一个使用 material-ui 的示例项目。

我看到我在 package.json 文件中有以下包

{
  ...
  "dependencies": {
    "@material-ui/core": "^1.4.1",
    ...
  },
  "devDependencies": {
    "@types/material-ui": "^0.20.6",
    ...
  },
  ...
}

之后npm install,我在我的项目文件夹中看到以下目录

node_modules/@types/material-ui/
node_modules/@material-ui/core/

以下是我的问题:

  1. 我想了解为什么material-ui@作为其包名的一部分使用,这种包命名是否意味着它是一个TS包?即,它本身携带类型信息。

  2. 如果以上是真的,是真的/@types/material-ui/不需要吗?

3个回答

@在包名中并不意味着它是一个 TypeScript 包;普通的 JavaScript 包也可以有@前缀。

@前缀意味着这是一个范围的包; @material-ui/@types/.下有一系列包

在这种特定情况下,@material-ui/core包含自己的类型定义(*.d.ts文件),因此@types/material-ui不需要也不会实际使用。通常@types/,纯 JavaScript 包需要包,这些包本身不包含任何类型定义。

@typesTypeScript 使用module为您提供丰富的方法和成员类型定义。如果您使用的是 TypeScript,请保留它们,否则就没有必要了。

在此处阅读更多信息:https : //basarat.gitbooks.io/typescript/docs/types/@types.html

以 开头的包@是“界定”它们的约定。太棒了:https : //docs.npmjs.com/misc/scope

@types范围是由巨大的提供typescript类型定义DefinitelyTyped项目