Какая связь между @ material-ui / core и @ types / material-ui? - PullRequest
0 голосов
/ 06 сентября 2018

Здесь я вижу пример проекта с использованием 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 ]

0 голосов
/ 06 сентября 2018

Пакеты, начинающиеся с @, являются соглашением об их определении. Это круто: https://docs.npmjs.com/misc/scope

Область действия @types - это определения типов TypeScript, предоставляемые огромным DefiniteTyped проектом

0 голосов
/ 06 сентября 2018

@ в имени пакета не означает, что это пакет TypeScript; простые пакеты JavaScript также могут иметь префикс @.

Префикс @ означает, что это пакет с областью действия ; то есть существует семейство пакетов под @material-ui/, а также под @types/.

В этом конкретном случае @material-ui/core содержит свои собственные определения типов (*.d.ts файлы), поэтому @types/material-ui не требуется и фактически не будет использоваться. Как правило, пакеты @types/ необходимы для простых пакетов JavaScript, которые сами по себе не содержат никаких определений типов.

0 голосов
/ 06 сентября 2018

@types модули используются TypeScript, чтобы предоставить вам подробные определения типов методов и членов. Если вы используете TypeScript, сохраните их, иначе в этом нет необходимости.

Подробнее здесь: https://basarat.gitbooks.io/typescript/docs/types/@types.html

...