Интерфейс Typescript, функция и пространство имен имеют одинаковое имя. Который экспортируется?
В исследуемом файле определения Typescript (DefiniteTyped) есть интерфейс, функция и пространство имен с одинаковым именем: twilio
,
Вот пример из первых нескольких строк файла:
declare interface twilio {
(sid?: string, tkn?: string, options?: twilio.ClientOptions): twilio.RestClient
}
declare function twilio(sid?: string, tkn?: string, options?: twilio.ClientOptions): twilio.RestClient;
declare namespace twilio {
....
Затем весь путь внизу файла говорит
export = twilio;
Ну, какой это экспорт? Интерфейс? Функция? пространство имен? Как это имеет смысл? Как вы можете назвать несколько вещей точно так же, как в одном и том же объеме / пространстве имен??
4 ответа
Развернуть ответ @ppp
Слияние объявлений — это когда компилятор TypeScript объединяет два или более типов в одно объявление при условии, что они имеют одинаковое имя.
Важно помнить: класс с классом нельзя объединять.
Так просто, например, разрешено слияние:
interface User {
name: string;
}
interface User {
age: number;
}
interface User {
height: number;
}
class Person implements User {
name = "John"
age = 30;
height = 180
}
enum User {...}
namespace User {...}
const person = new Person();
console.log(person) // {name: "John", age: 30, height: 180}
export person;
Итак, чтобы ответить на ваш вопрос, вы можете экспортировать один тип, как в приведенном выше примере, остальная часть объявления объединяется между ними.
Официальный документ машинописного текста называет это « слиянием объявлений ».
По сути, он определяет что-то, что одновременно отличается от вышеперечисленного. Я добавляю новый ответ, чтобы дать вам ссылку на игровую площадку, и я надеюсь, что это поможет вам.
Они только что создали вещь "бегун-беги-спортивная сумка". Это нормально, это не твой код. В основном они экспортируют вещь, которая является всем вышеперечисленным. Точно так же, как вы могли бы сделать это в JavaScript:
function foo() {};
foo.bar = function() {};
посмотрите на этот код для детской площадки