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

4
我在这里看到一个使用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个回答

12

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

前缀@表示这是一个作用域包;即存在一组以@material-ui/@types/为前缀的包系列。

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


2
根据 https://material-ui.com/guides/typescript/,看起来我们不需要 @types/material-ui,我有遗漏什么吗? - chen
@chen 你不需要它... 但我必须将 tsconfig 的 es5 改为 es6。 - Nick G.
他说我们不需要像 npm i -D @types/material-ui 这样安装,因为 material-ui 已经在其包中具有类型定义。 - German

0

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接