#typescript
Вопрос:
У меня есть несколько заявлений в src/types/*.d.ts
и в моем src/types/role.d.ts
, у меня есть:
declare interface Role {
id: string;
title: string;
openings: string;
jobDescriptionUrl?: string;
minCompRange: number | string;
maxCompRange: number | string;
location: string;
postCovidLocation: string;
urgency: ROLE_URGENCY;
equity: ROLE_EQUITY;
company?: Company;
color: string;
status: ROLE_STATUS;
deletedAt?: Date;
hiredAt?: Date;
createdAt: Date;
pausedAt?: Date;
managerEmail?: string;
managerName?: string;
isExcRole?: boolean;
recruiter?: Recruiter;
offer?: File;
}
Каким-то образом он находит Recruiter
и File
, но Company
, которое объявлено в src/types/company.d.ts
:
declare interface Company {
companyName: string;
companyUrl: string;
}
его не найдут. Я получаю сообщение об ошибке:
src/types/role.d.ts:14:12 - error TS2304: Cannot find name 'Company'.
14 company?: Company;
~~~~~~~
По-моему tsconfig.json
, у меня есть:
"include": [
"src/**/*.ts",
]
Что я делаю не так?
Комментарии:
1. возможно, в этой статье содержится ответ на ваш вопрос
2. Это немного сбивает с толку. Я читал, что люди отходят от
typeRoots
этого в пользуinclude
всего этого3. У вас где-нибудь объявлены директивы о тройной косой
role.d.ts
черте ?4. Нет — что это значит?
5. Хм, интересно. Директива reference (в частности
/// <reference types="...">
) позволяет указать зависимость между файлами разных типов. Я подумал, что вы, возможно, пропустили ссылкуcompany.d.ts
, но вы говорите, что у вас еще нет никаких ссылокRecruiter
, иFile
работаете.
Ответ №1:
попробуйте export interface Company
вместо declare interface Company
этого, может быть, решится!
Ответ №2:
Специальный комментарий указывает компилятору typescript включить другой файл определения типа
/// <reference path="myCustomDecls.d.ts" />
Это следует использовать только в других .d.ts
файлах
Чтобы компилятор typescript действительно признал ваши .d.ts
файлы, вам также придется указать их следующим "compilerOptions" -> "typeroots"
образом
"compilerOptions": {
"typeRoots": ["./types/"] // directory containing .d.ts-files
}
Если у вас несколько файлов пользовательских деклараций, я бы рекомендовал создать index.d.ts
файл, включающий все ваши пользовательские .d.ts
файлы, используя первый упомянутый «специальный комментарий».