Как мне структурировать проект, который включает сценарий основного потока (DOM) и работников? Например:
main.ts
// This file must have DOM types, but not worker types.
const worker = new Worker('worker.js');
worker.onmessage = (event) => {
// Ideally, I should be able to reference types from the worker:
const data = event.data as import('./worker').HelloMessage;
console.log(data.hello);
};
worker.ts
// This file must have worker types, but not DOM types.
// The global object must be one of the worker globals (how do I pick which?)
const helloMessage = {
hello: 'world',
};
export type HelloMessage = typeof helloMessage;
postMessage(helloMessage);
Всякий раз, когда я пробовал это в прошлом, я чувствую, что боролся с TypeScript одним из следующих способов:
- Использование одного
tsconfig.json
который имеет рабочий и DOM-типы. Но, конечно, это не точно по типу. - Использование нескольких
tsconfig.json
. Но тогда границы проекта затрудняют ссылки на типы между ними.
Кроме того, как я могу объявить глобальный в работнике? Раньше я пользовался declare var self: DedicatedWorkerGlobalScope
, но есть ли способ установить глобальное (а не просто установить self
)?