Ответ 1
import * as a from 'a';
- новый синтаксис импорта "ES6 style" (доступный с Typescript 1.5).
По возможности этот синтаксис теперь должен использоваться.
Однако есть одно предостережение. Синтаксис импорта ES6 может импортировать только модули (как определено ES6) или объекты (классы, интерфейсы, vars,...), экспортированные как часть модуля.
Некоторые Javascript librairies будут напрямую экспортировать функцию или класс, и соответствующий файл определения будет выглядеть следующим образом:
declare module "my-class" {
class MyClass { ... }
export = MyClass
}
В этом случае синтаксис "старого" импорта является единственным, который можно использовать
import MyClass = require("my-class");
Несоблюдение этого синтаксиса приведет к ошибке TS2497
Отметьте эту проблему для получения подробной информации и возможного обходного пути, который в предыдущем случае должен был бы добавить в файл определения объявление пустого модуля
declare module "my-class" {
class MyClass { ... }
module MyClass {} // <=
export = MyClass
}