В моей компании мы хотим автоматизировать генерацию наших наборов на основе API GraphQL и упаковать их в пакет, к которому мы можем обратиться со всеми нашими клиентами, которые используют API вместо того, чтобы полагаться на копировальную пасту. Я читал документы TypeScript и немного запутался в том, как go рассказывать TypeScript об этих пользовательских типах.
Из моих чтений TypeScript автоматически будет искать node_modules/@types/*
. К сожалению, поскольку это внутренний API, и мы не хотим публиковать sh в репозитории DefiniteTyped (я не обнаружил, что вы не можете явно писать и @types/package
, и это будет закрытый модуль). Таким образом, во всяком случае, это означает, что то, что мы назовем нашим пакетом, не будет автоматически проверяться TypeScript.
Я читал о types
и typeRoots
, думая, что это могут быть варианты, которые мне нужно использовать. Из моего прочтения types
я могу указать @types
, который я хочу включить в TypeScript, вариант выбора вишни. typeRoots
похоже на то, что я должен использовать; однако он говорит, что только пакеты в этой опции будут включены. Мое предположение здесь заключается в том, что мне нужно будет сделать что-то вроде следующего (нам все еще нужны определения в @types
):
{
"compilerOptions": {
"typeRoots": ["node_modules/@types", "node_modules/@companyOrg/customTypings"]
}
}
Кто-нибудь делает аналогичную вещь и нашел способ для TypeScript включить ваши пользовательские наборы, которые не подпадают под зонтик @types
? Обратите внимание, что я не говорю о создании custom.d.ts
в каталоге проекта, но использую NPM пакетов, похожих на @types/react
, за исключением чего-то вроде @company/our-types
.
Current tsconfig.json
:
{
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "preserve",
"preserveSymlinks": true,
"typeRoots": [
"node_modules/@types",
"node_modules/@companyOrg/customTypings",
],
},
"include": [
"src"
],
}
Также я работаю над этим локально, поэтому я использовал yarn link @company/our-types
, возможно, именно в этом и заключается проблема. Я несколько раз проверил путь, и все вроде нормально.