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

che*_*hen 2 typescript reactjs material-ui npm-install

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

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

{
  ...
  "dependencies": {
    "@material-ui/core": "^1.4.1",
    ...
  },
  "devDependencies": {
    "@types/material-ui": "^0.20.6",
    ...
  },
  ...
}
Run Code Online (Sandbox Code Playgroud)

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

node_modules/@types/material-ui/
node_modules/@material-ui/core/
Run Code Online (Sandbox Code Playgroud)

这是我的问题:

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

  2. 如果上述情况属实,那么/@types/material-ui/根本不需要吗?

Mik*_*eyn 7

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

@前缀意味着这是一个范围的包 ; 也就是说有一系列包装在下面@material-ui/和下面@types/.

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

  • 根据 https://material-ui.com/guides/typescript/,我们似乎不需要 @types/material-ui,我错过了什么吗? (2认同)