@Riim

Typescript и тернальный оператор в export?

Ситуация такая: я проверяю наличие нативного Set-а и если он есть, то модуль возвращает его, если нет, то полифил. Выглядит примерно так:
let Set = (<any>window).Set;

if (!Set || Set.toString().indexOf('[native code]') == -1) {
	Set = class Set<T> {
		// ...
	};
}

export = Set;


Проблема в том, что когда я где-то использую этот модуль, я не могу использовать тип Set:
import Set = require('./Set');
let s: Set<Node> = new Set<Node>();

говорит, что не знает что такое Set.

Если всегда возвращать класс, то всё норм, но нужно как-то вклинить нативный вариант. Пробовал всяко переписывать:
class Set<T> {
	// ...
};

let NativeSet = (<any>window).Set;

export = NativeSet && NativeSet.toString().indexOf('[native code]') != -1 ? NativeSet : Set;

так тоже не выходит. Затипизировать NativeSet в выражении export-а как <type<Set<T>>>
тоже не даёт.
  • Вопрос задан
  • 451 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы