Просто он не в node_modules/react лежит, а в node_modules/@types/react.
Смысл в том, что декларационные файлы (.d.ts) могет лежать практически где угодно, и совсем не обязаны иметь прямого отношения к реальным js-файлам. Они просто объявляют типы. А так как много компонтентов написаны не на ts, а на js (в том числе react), то когда мы ставим эти зависимости, ts ничего не знает о их типах. Вот для решения этих проблем есть проект DefinitelyTyped. В нем дописывают типы для многих популярных компонентов, написанных не на ts, в том числе и для react. Потом эти компоненты выливаются в npm и имеют префикс @types. К примеру вот @types/react.
В проект эти зависимости добавляются как devDependencies и нужны только для процесса разработки. В нашем package.json ты тоже найдешь их.
"devDependencies": {
"@graphql-codegen/add": "^2.0.1",
"@graphql-codegen/cli": "^1.17.10",
"@graphql-codegen/introspection": "^1.18.0",
"@graphql-codegen/near-operation-file-preset": "^1.17.11",
"@graphql-codegen/typescript": "^1.17.10",
"@graphql-codegen/typescript-apollo-client-helpers": "^1.1.0",
"@graphql-codegen/typescript-operations": "^1.17.8",
"@graphql-codegen/typescript-react-apollo": "^2.0.7",
"@next/bundle-analyzer": "^9.5.5",
"@storybook/addon-actions": "^6.0.28",
"@storybook/addon-docs": "^6.0.28",
"@storybook/addon-links": "^6.0.28",
"@testing-library/react": "^10.0.1",
"@testing-library/react-hooks": "^3.4.2",
"@types/apollo-upload-client": "^14.1.0",
"@types/css": "^0.0.31",
"@types/cypress": "^1.1.3",
"@types/express": "^4.17.8",
"@types/glob": "^7.1.3",
"@types/jest": "^25.1.4",
"@types/lodash": "^4.14.161",
"@types/node": "^13.9.5",
"@types/react": "^17.0.0",
"@types/react-dom": "^17.0.0",
"@types/styled-components": "^5.1.4",
"@types/urijs": "^1.19.12",
"@typescript-eslint/eslint-plugin": "^2.25.0",
"@typescript-eslint/parser": "^2.25.0",