Старые компиляторы TypeScript не могут обрабатывать unknown
.Вот метод шим, который удивительно работает.
- Создайте следующий файл
shim.d.ts
. - Ссылка на этот файл в основном файле вашей библиотеки.
shim.d.ts
declare global {
// @ts-ignore
export type unknown = any;
}
export { }
index.ts
/// <reference path="shim.d.ts" />
/**
* This is a tiny demo function that returns `unknown`. Your actual module
* could include a lot more functionality.
*/
export default (): unknown => {
return {} as unknown;
};
Когда потребитель вашей библиотеки компилирует более старую версию TypeScript,компилятор создаст новый тип с именем unknown
, который является псевдонимом для any
.Когда потребитель вашей библиотеки компилируется с более поздней версией TypeScript, компилятор не будет создавать новый тип, но из-за этого хитрого @ts-ignore
компилятор также не будет жаловаться.
Вот демонстрационная версия этого на работе.
Как указано в комментариях jcalz
, вместо any
мы могли бы использовать псевдоним {} | null | undefined | void
вместо
.