Typescript: TS4023: рдПрдХреНрд╕рдкреЛрд░реНрдЯреЗрдб рд╡реИрд░рд┐рдПрдмрд▓ 'X' рдореЗрдВ рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ 'a / file / path' рд╕реЗ 'Y' рдирд╛рдо рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдирд╛рдо рдирд╣реАрдВ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 18 рдирд╡ре░ 2015  ┬╖  24рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: microsoft/TypeScript

рдореИрдВ рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рд╕реЗ рдмрд╛рд╣рд░реА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

// ClassA.ts
export default class ClassA {
  public method() { return true; } 
}

// ModuleB.ts
import ClassA from './ClassA';
var moduleB = {
  ClassA: ClassA
};
export default moduleB;

// ModuleA.ts
import moduleB from './ModuleB';
var moduleA = {
  moduleB: moduleB
}
export default moduleA;

рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдкреВрд░реНрддрд┐ рдХреА рдЬрд╛рдПрдЧреАред рдпреЛрдЬрдирд╛ рдпрд╣ рд╣реИ рдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрднреЛрдХреНрддрд╛ рдХреНрд▓рд╛рд╕ рдП рдХреА рдПрдХ рдЖрд╡реГрддреНрддрд┐ рдХреЛ рддреБрд░рдВрдд рдмрджрд▓ рджреЗрдЧрд╛:

import moduleA from './ModuleA';
var anInstance = moduleA.moduleB.ClassA();

рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд JS рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрдХрд▓рдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

Using tsc v1.6.2
.../src/ModuleA.ts(3,5): error TS4023: Exported variable 'moduleA' has or is using name 'ClassA' from external module ".../src/ClassA" but cannot be named.

рдХреНрдпрд╛ рдпрд╣рд╛рдБ рдХреЛрдИ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ? рдХреНрдпрд╛ рдореИрдВ рдЬреЛ рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ рдЖрдкрдХреЛ рдЖрдорддреМрд░ рдкрд░ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рддреЗрдЬреА рд╕реЗ рдЬрд╡рд╛рдм рдорд┐рд▓реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдо рдпрд╣рд╛рдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк --declaration рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдВрдХрд▓рдХ рдХреЛ рдЕрдкрдирд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИред

рдЬрдм ModuleA.d.ts рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ, рддреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЖрдХрд╛рд░ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реБрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд░ рд╢рд╛рдмреНрджрд┐рдХ (рдЬреИрд╕реЗ { moduleB: { classA: *mumble?* } } ) рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдХреЛрдИ рдРрд╕рд╛ рдирд╛рдо рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╕реАрдзреЗ рддреМрд░ рдкрд░ classA рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ "рдирд╛рдо рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛" рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИред

рдпрджрд┐ рдЖрдк import ClassA ModuleA.ts рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рддреНрд░реБрдЯрд┐ рджреВрд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рд╕рднреА 24 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдУрд╣ - рдЕрдЧрд░ рдпрд╣ рд╕рд╡рд╛рд▓ рдкреВрдЫрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реИред рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдФрд░ рдореБрдЭреЗ рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдорд╛рдзреНрдпрдо рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ рдЖрдкрдХреЛ рдЖрдорддреМрд░ рдкрд░ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рддреЗрдЬреА рд╕реЗ рдЬрд╡рд╛рдм рдорд┐рд▓реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдо рдпрд╣рд╛рдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк --declaration рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдВрдХрд▓рдХ рдХреЛ рдЕрдкрдирд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИред

рдЬрдм ModuleA.d.ts рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ, рддреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЖрдХрд╛рд░ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реБрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд░ рд╢рд╛рдмреНрджрд┐рдХ (рдЬреИрд╕реЗ { moduleB: { classA: *mumble?* } } ) рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдХреЛрдИ рдРрд╕рд╛ рдирд╛рдо рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╕реАрдзреЗ рддреМрд░ рдкрд░ classA рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ "рдирд╛рдо рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛" рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИред

рдпрджрд┐ рдЖрдк import ClassA ModuleA.ts рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рддреНрд░реБрдЯрд┐ рджреВрд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рд╣рд╛рдп рд░рдпрд╛рди - рд╕рд▓рд╛рд╣ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдЖрд░рдИ рдвреЗрд░ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдФрд░ рд╕рд▓рд╛рд╣ - ModuleA рд▓рд┐рдП рдЖрдпрд╛рдд рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдореНрдореАрдж рдХреЗ рдЕрдиреБрд░реВрдк рдЪреАрдЬреЗрдВ рдорд┐рд▓реАрдВред

рдпрд╣рд╛рдВ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╕рдВрджрд░реНрдн - рдореЗрд░рд╛ рд▓рдХреНрд╖реНрдп рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реЗ рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рд╣реИред (рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЕрднреА рддрдХ рдХрд╛рдлреА рдХрд╛рдо рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ? # 5039?) рдпрд╣ рдЖрдпрд╛рдд рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ ModuleA рдЕрдЬреАрдм ModuleB рдСрдмреНрдЬреЗрдХреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХреНрд╕рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рд╕реАрдзреЗ ModuleA - рдореЗрдВ рдЗрдореНрдкреЛрд░реНрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:

import {moduleB} from './moduleB';
import {ClassA} from './ClassA';

рдпрд╛ ModuleB (рджреЛрдиреЛрдВ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ ClassA рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрде рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдореЗрдВ):

import {moduleB, ClassA} from './moduleB';

рдореБрдЭреЗ рдЯреАрдПрд╕ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХрдо рдкрддрд╛ рд╣реИ - рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдореИрдВ рдЬреЛ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЛрдЪрд╛ рдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рдпрд╣ рдШрдЯрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ ModuleB рдЙрд╕ рдкрд░ рдПрди рдкреНрд░рддреАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╕реНрддреБ рдирд┐рд░реНрдпрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП ModuleA рдХреЛ рдЙрди рдкреНрд░рддреАрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? ModuleB рд▓рд┐рдП рдЖрдпрд╛рдд рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ - ModuleA рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╛ рдХрд┐ рдЕрд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛рдд ClassA рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рд╣реИ ModuleB , рдЗрд╕рд▓рд┐рдП рд╡рд╣рд╛рдБ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд░ рдпрд╣ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рд╣реИ ClassA рдЬрдм рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд╛ рдмрдирд╛рдиреЗ ModuleA ?

рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдКрдкрд░ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛ рд╣реИ - рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЬрд▓реНрджреА рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рддреБрдо рдХреНрдпрд╛ рдХрд╣ рд░рд╣реЗ рд╣реЛред рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ ModuleA.d.ts рдХреНрдпрд╛ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП?

рдХрдВрдкрд╛рдЗрд▓рд░ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рдЬреЛрдбрд╝реЗрдВрдЧреЗ (рдЕрд░реНрдерд╛рдд рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдг) рдЬреЛ рдШреЛрд╖рдгрд╛рдУрдВ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдб рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рдерд╛ред рдЖрдкрдХреЛ рдЬреЛ рддреНрд░реБрдЯрд┐ рд╣реЛ рд░рд╣реА рд╣реИ, рдЙрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рд┐рдд рдПрдХ рдирд┐рд░реНрдпрд╛рддрд┐рдд рдШреЛрд╖рдгрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдиреЛрдЯреЗрд╢рди рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред рдЗрд╕рдХреЗ рджреЛ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рддреЛ рдирд╛рдо рд╕реБрд▓рдн рдирд╣реАрдВ рд╣реИ, рдЕрд░реНрдерд╛рдд рд╡рд░реНрддрдорд╛рди рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╛ рдПрдХ рдШреЛрд╖рдгрд╛ рд╣реИ рдЬреЛ рдореВрд▓ рдШреЛрд╖рдгрд╛ рдХреЛ рдЫрд╛рдпрд╛ рджреЗ рд░рд╣реА рд╣реИред

рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдкрдХрд╛ рдХрд╛рдо рд╕реНрдкрд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реИ, рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдиреЛрдЯреЗрд╢рди рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдЗрд╕реЗ рд╢рдмреНрджрд╢рдГ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛; рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдирд╛рдо рд╕реБрд▓рдн рд╣реИ, рдЕрд░реНрдерд╛рдд рдЖрдкрдХреЗ рдкрд╛рд╕ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЖрдпрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред

@ рдореЗрдШреЗрдЬреА рдиреЗ рдХрд╣рд╛:

рдХрдВрдкрд╛рдЗрд▓рд░ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рдЬреЛрдбрд╝реЗрдВрдЧреЗ (рдЕрд░реНрдерд╛рдд рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдг) рдЬреЛ рдШреЛрд╖рдгрд╛рдУрдВ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдб рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рдерд╛ред

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд╣рдореЗрд╢рд╛ рдХреЛрдб рдореЗрдВ рдЖрдпрд╛рдд рдХрдердиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ --declarations рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ), рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рд╢реЛрд░ рднреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг tslint рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИрдВред "рдЕрдкреНрд░рдпреБрдХреНрдд рдЖрдпрд╛рдд"ред рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдБ рдХрд┐ рдЖрдк рд╕рдВрдХрд▓рдХ рдХреЛ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдШреЛрд╖рдгрд╛рдУрдВ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИ?

рдЗрд╕ рд╕реБрдЭрд╛рд╡ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред рддрд░реНрдХрд╕рдВрдЧрдд рдерд╛ рдЖрдпрд╛рдд рдЖрдпрд╛рдд рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдШреЛрд╖рдгрд╛ рд╣реИ, рдФрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рдирд╣реАрдВ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рди рджреЗрдВред

рдЗрд╕рдХреЗ рдЧрд╣рд░реЗ рдкрд░рд┐рдгрд╛рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

moduleA -> moduleB -> moduleC -> moduleD ред

moduleB рд╡рд╣ рд╣реИ рдЬрд┐рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП import { ABC } from 'moduleA' рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЬрдм moduleC moduleB moduleC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдкрдиреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдлрд┐рд░ рд╕реЗ рд╕рдВрдХрд▓рди рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ moduleB ABC moduleA рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ moduleB рдиреЗ рдЗрд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ:

  1. moduleC рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреА рдПрдХ рдХрдард┐рди рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП moduleA рдФрд░ рдЖрдпрд╛рдд ABC
  2. moduleB рдХреЛ рди рдХреЗрд╡рд▓ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ ABC рдлрд┐рд░ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ moduleC рдЖрдпрд╛рдд рдХрд░реЗрдВред

рдпрджрд┐ moduleD рд╕рдорд╛рди рдЪреАрдЬреЗрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдЖрдкрдХреЛ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдкреВрд░реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореИрдВ рдпрд╣ рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛ рдХрд┐ рдпрд╣ рдорд╛рдорд▓рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ typings рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдЕрд╡рд░реБрджреНрдз рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдореБрджреНрджрд╛ рд╣реИ: https://github.com/typings/typings/issues/625 ~~

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реЗ moduleD moduleA рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ:

  • moduleA => redux
  • moduleB => redux-thunk
  • moduleC => redux-thunk рд╢реАрд░реНрд╖ рдкрд░ рдХрд╕реНрдЯрдо рдХреЛрдб
  • moduleD => рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдп
  • ABC => Dispatch рдЗрдВрдЯрд░рдлрд╝реЗрд╕ redux

рдореБрдЭреЗ @unional рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ

рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВ, @unional рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдореБрджреНрджреЗ рдмрд╣реБрдд рдпрдерд╛рд░реНрдерд╡рд╛рджреА рд╣реИрдВ рдФрд░ рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдХрд┐рд╕реА рднреА рдордзреНрдпрд╡рд░реНрддреА / рд╕рд╣рд╛рдпрдХ

Https://github.com/Microsoft/TypeScript/issues/9944 рдЯреНрд░реИрдХреНрд╕ рдХреЛ рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдПрдорд┐рдЯ рдЪрд░рдг рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдирд╛ред

рдзрдиреНрдпрд╡рд╛рдж!

рдЖрдпрд╛рдд рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ noUnusedLocals рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рдХ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░реЗрдЧрд╛ред рдореИрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдиреЛрдЯреЗрд╢рди рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рддрдм рдореБрдЭреЗ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрддрд╛ред рдЙрджрд╛рд╣рд░рдг:

class Whatever {
  fetch(uri: string): Promise<void> { }
  ensureFetched = MemoizedFunction<(uri: string) => Promise<void>> = memoize((uri: string) => this.fetch(uri))
}

рдореИрдВ ensureFetched рд▓рд┐рдП рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░рдХрд╛рд░ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛

рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдорд┐рд▓рд╛:
tsconfig рдореЗрдВ: include: [ ..., "node_modules/@your_scope/your_library" ]
рд╢реБрднрдХрд╛рдордирд╛рдПрдБ рдФрд░ рдордЬрд╝реЗ рдХрд░реЗрдВ: рд╕реНрдорд╛рдЗрд▓реА:

@ salim7 рдпрд╣ рдЖрдкрдХреЗ рд╕рдВрдХрд▓рди рд╕рдордп рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдПрдХ рдРрд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдкреБрдирдГ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрдХрд▓рд┐рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП) рдФрд░ рдЖрдкрдХреЛ рд▓рдХреНрд╖реНрдп рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдХрдо рд╕реЗ рдХрдо рд╕рд╛рдорд╛рдиреНрдп рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рдЦреНрддреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИред

@mhegazy рд╕рдорд╕реНрдпрд╛ рдиреЗ рдЕрдЧрд▓реЗ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдкреБрди: рдкреЗрд╢ рдХрд┐рдпрд╛:

import * as Foo from "./Foo";

export class Bar {
    baz = new Foo.Baz(); // Compiler forgot "Foo." prefix in the type, and throws this error, because "Baz" without perfix is not imported.
    getBaz() { // All the same
       return new Foo.Baz();
    }
}

рд╕рдорд╛рдзрд╛рди рд╕реНрдкрд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ:

import * as Foo from "./Foo";

export class Bar {
    baz: Foo.Baz = new Foo.Baz(); // ok
    getBaz(): Foo.Baz { // ok
       return new Foo.Baz();
    }
}

рдореИрдВ рдКрдкрд░ рдХреЗ рдирдореВрдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдХреГрдкрдпрд╛ рдПрдХ рдирдпрд╛ рдмрдЧ рджрд░реНрдЬ рдХрд░реЗрдВ, рдФрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдВрджрд░реНрдн рдкреНрд░рджрд╛рди рдХрд░реЗрдВред

@ рдзрдиреНрдпрд╡рд╛рдж рдзрдиреНрдпрд╡рд╛рдж! рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдерд╛!

рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИ:

export { IMyInterface } from './file'
````

The solution was to do this:
```ts
import { IMyInterface } from './file'
export { IMyInterface }

рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ tbh рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ noUnusedLocals рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯреЗрдВ?

@yordis // @ts-ignore

@pelotom рд╣рд╛рдБ, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореЗрд░реА рдЧрд▓рддреА рд╣реИ,

рдореИрдВ рдПрдХ рдмрд╛рдд рдкрд░ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдФрд░ рдореИрдВрдиреЗ рдХреБрдЫ рдФрд░ рд▓рд┐рдЦрд╛ред

рдХреНрдпрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ noUnusedLocals рдФрд░ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдХрд╛ рдореБрджреНрджрд╛ рддрдп рдХрд┐рдпрд╛ рдерд╛?

рдореЗрд░рд╛ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб, рдЬреЛ рдореБрдЭреЗ рдХреБрд▓ рджрд░реНрдж рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ,

import {SomeInterface} from "./SomeFile";

const _dummySomeInterface : undefined|SomeInterface = undefined;
_dummySomeInterface;

//Code that implicitly uses SomeInterface

рдЕрд╡реЙрдЗрдб noUnusedLocals , рдЬрд╣рд╛рдВ рд╕рдВрднрд╡ рд╣реЛ, рд╡рд╣рд╛рдВ рднреА рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд░ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

CyrusNajmabadi picture CyrusNajmabadi  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

weswigham picture weswigham  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Antony-Jones picture Antony-Jones  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

manekinekko picture manekinekko  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dlaberge picture dlaberge  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ