Если я пытаюсь определить класс с таким же именем, как тип, который импортируется автоматически машинопись, такой, какСкрытие импорта из Машинописи «прелюдии»
class Map {
}
тогда я получаю следующую ошибку
error TS2000: Duplicate identifier 'Map'.
Я хотел бы сделать это, чтобы иметь возможность переименовать или полностью исключить тип библиотеки классов TypeScript Map
, чтобы я мог определить свое имя с тем же именем.
Использование моего Map
в модуле (согласно одному из ответов ниже) помогает, но я по-прежнему не могу ссылаться на него по неквалифицированному имени (т. Е. Путем импорта), хотя на этот раз нет жалобы на дублирующие имена;
Пусть A.ts
содержит::
module A {
export class Map {
}
}
и B.ts
содержит: импорт просто не делает ничего
/// <reference path='A.ts'/>
import Map = A.Map
function test (m: Map) {
}
Для того, чтобы сделать эту компиляцию Мне нужно заменить m: Map
на m: A.Map
. В противном случае компилятор жалуется, что мне не хватает каких-то общих аргументов, потому что он предполагает, что я имею в виду тип Map
из прелюдии TypeScript.
Я чувствую, что я должен иметь возможность определить «локальное» имя (через явное объявление или через импорт), которое скрывает любое эквивалентное определение в прелюдии; или я должен иметь возможность вручную отключать импорт определенных типов из прелюдии (как я могу в Haskell).
Замечательный ответ +1, я хотел бы упомянуть, что для 'или вообще не импортировать класс библиотеки классов TypeScript 'существует флаг компилятора, чтобы исключить * все * внутри' lib.d.ts' с помощью ' noLib', а затем использовать пользовательский 'lib.d.ts'. Но я бы посоветовал не использовать это и работать вокруг него, как вы упомянули, чтобы сохранить жизнь простой :) – basarat
Спасибо. Это работает, но, к сожалению, я не могу ссылаться на свою «Карту» по неквалифицированному имени. Обновил мой вопрос. Однако, я думаю, я приму этот ответ, если нет никакого способа обойти это. (Предложение @ basarat немного резкое :) – Roly
Возможно это? http://www.typescriptlang.org/Playground/#src=module%20SomeNamespace%20%7B%0A%09class%20Map%20%7B%0A%09%09Foo()%20%7B%0A%09%09 % 09% 0A% 09% 09% 7D% 0A% 09% 7D% 0A% 09% 0A% 09class% 20SomethingElse% 20% 7B% 0A% 09% 09constructor()% 20% 7B% 0A% 09% 09% 09var % 20map% 20% 3D% 20new% 20Map()% 3B% 20% 2F% 2F% 20Sorta% 20unqulified% 20reference ...% 0A% 09% 09% 09map.Foo()% 3B% 0A% 09% 09% 7D% 0A% 09% 09% 0A% 09% 7D% 0A% 7D –