Type your bundle with bundle specific definition like replicants and messages.
This library replaces the type definition in NodeCG core (nodecg/types/{browser,server}.d.ts
).
If you use this library, don't use the type definition in NodeCG core.
npm i -D ts-nodecg
# or
yarn add -D ts-nodecg
TypeScript 3.5 or newer is recommended
First, define your bundle's replicant and messages.
type ReplicantMap = {
players: Array<{name: string; twitter: string}>;
// ...
};
type MessageMap = {
updateFoo: {
// optional value to send with sendMessage / value to receive from listenFor
data: number;
// optional value to receive from sendMessage / value to send with listenFor callback
result: number;
// optional error object/value sent from listenFor callback
error: CustomError;
};
};
import {CreateNodecgInstance} from 'ts-nodecg/server';
type NodeCG = CreateNodecgInstance<
'my-bundle', // name of your bundle
BundleConfig,
ReplicantMap,
MessageMap
>;
export = (nodecg: NodeCG) => {
// ...
};
Define the global nodecg
/NodeCG
variables somewhere in the project.
import {CreateNodecgInstance, CreateNodecgConstructor} from 'ts-nodecg/browser';
declare global {
interface Window {
nodecg: CreateNodecgInstance<
'my-bundle', // name of your bundle
BundleConfig,
ReplicantMap,
MessageMap
>;
NodeCG: CreateNodecgConstructor<
'my-bundle', // name of your bundle
BundleConfig,
ReplicantMap,
MessageMap
>;
}
}
Coming Soon™
MIT © Keiichiro Amemiya