Po przeczytaniu this manual i ten cytat:Jaka jest różnica między `` deklarują namespace` i deklarują module`
Ważne jest, aby pamiętać, że w maszynopisie 1,5 nomenklatura ma zmieniło. "Moduły wewnętrzne" są teraz "przestrzeniami nazw". „moduły zewnętrzne” są teraz po prostu „moduły”
Byłem pod wrażeniem, że declare module
nie jest już używany i został zastąpiony przez declare namespace
jednak podczas zwiedzania node_modules\@types\node\index.d.ts
widzę, że zarówno declare module
i declare namespace
służy:
declare namespace NodeJS {
export var Console: {
prototype: Console;
new(stdout: WritableStream, stderr?: WritableStream): Console;
}
...
declare module "buffer" {
export var INSPECT_MAX_BYTES: number;
var BuffType: typeof Buffer;
var SlowBuffType: typeof SlowBuffer;
export { BuffType as Buffer, SlowBuffType as SlowBuffer };
}
Dlaczego tak jest? Co za różnica?
Moduły zewnętrzne (moduły ES6) nie są tutaj wchodzą w grę tutaj, jak rozumiem.
Istnieje krótka definicja obu par akapitów w łączu, który masz w swoim poście. Zasadniczo przestrzenie nazw to sposób pisania skryptu implementującego wzorzec modułu. Moduły są teraz równoważne modułom ES2015. Część deklarowana oznacza, że obie są obecne i zdefiniowane przez kogoś innego. :) – toskv
@toskv, tak, na pewno przeczytałem stronę, z którą się łączyłem. Ale jest to bardzo mylące, dlatego wysłałem tutaj pytanie: –
@toskv, Mam poprawną odpowiedź, zobacz [moja odpowiedź] (http://stackoverflow.com/a/42030656/2545680) –