Просто он не в 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",