Итак, я новичок в TypeScript и хотел знать, есть ли способ повторно использовать тип объединения из стороннего модуля @types.
Пример, в @types/node
у нас есть следующий тип объединения для кодировки буфера:
// Buffer class
type BufferEncoding = "ascii" | "utf8" | "utf-8" | "utf16le" | "ucs2" | "ucs-2" | "base64" | "latin1" | "binary" | "hex";
И если у меня есть служебная функция, которая передает значение до Buffer.from()
, я должен указать тип объединения, совместимый с типом "BufferEncoding", я не могу просто используйте «строку» следующим образом:
export function convertToBuffer(input: string | Buffer, encoding?: string): Buffer {
if (input instanceof Buffer) return input;
return Buffer.from(input, encoding);
}
Очевидно, я мог бы просто скопировать и вставить тип BufferEncoding из @types/node
, но это не сохранило мой код DRY, и мне не разрешено импортировать из @types/*
modules.
export type BufferEncoding = "ascii" | "utf8" | "utf-8" | "utf16le" | "ucs2" | "ucs-2" | "base64" | "latin1" | "binary" | "hex";
export function convertToBuffer(input: string | Buffer, encoding?: BufferEncoding): Buffer {
if (input instanceof Buffer) return input;
return Buffer.from(input, encoding);
}
Меня не интересует использование типа "any" или других методов, которые ослабляют строгость проверок типов. Я подозреваю, что то, что я спрашиваю, может быть невозможным, и это нормально.