Typescript: рдПрдирдкреАрдПрдо рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛рдПрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 15 рдЬрдире░ 2016  ┬╖  147рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: microsoft/TypeScript

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 1.7.3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред

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

рдкреИрдХреЗрдЬ-рдПрдХ

ts src:

export default class ClassA {
  private foo: string;
  bar: number;
}

ts рдШреЛрд╖рдгрд╛:

declare class ClassA {
  private foo;
  bar: number;
}
export default ClassA;

рдкреИрдХреЗрдЬ-рдмреА (рдкреИрдХреЗрдЬ-рдП рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ):

ts src:

import ClassA from 'package-a';

namespace ClassAFactory {
  export function create(): ClassA {
    return new ClassA();
  }
}
export default ClassAFactory;

ts рдШреЛрд╖рдгрд╛:

import ClassA from 'package-a';

declare namespace ClassAFactory {
  function create(): ClassA;
}
export default ClassAFactory;

рдкреИрдХреЗрдЬ-рд╕реА (рдкреИрдХреЗрдЬ-рдП рдФрд░ рдкреИрдХреЗрдЬ-рдмреА рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ):

ts src:

import ClassA from 'package-a';
import ClassAFactory from 'package-b';

let classA: ClassA;
classA = ClassAFactory.create(); // error!!

рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреА рд╣реИ:

error TS2322: Type 'ClassA' is not assignable to type 'ClassA'.
Types have separate declarations of a private property 'foo'.

рдЬрдм рдореИрдВ рдкреИрдХреЗрдЬ-рдП рдХреА рдШреЛрд╖рдгрд╛ рд╕реЗ рд▓рд╛рдЗрди private foo; рдирд┐рдХрд╛рд▓рддрд╛ рд╣реВрдВ, рддреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рд╕реА рднреА рддреНрд░реБрдЯрд┐ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдереЛрдбрд╝рд╛ рджрд░реНрджрдирд╛рдХ рд╣реИред

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдШреЛрд╖рдгрд╛ рдХреЗ рд▓рд┐рдП рдирд┐рдЬреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рдбрд┐рдЬрд╛рдЗрди (https://github.com/Microsoft/TypeScript/issues/531) рджреНрд╡рд╛рд░рд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗрд░рд┐рдПрдмрд▓ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рдЬреА рдЧреБрдгреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдмреЗрд╣рддрд░ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ?

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

рдореИрдВрдиреЗ рдЕрднреА рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рдорд░реНрдЬ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдЙрдирдХреЗ рдирд╛рдо рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛, рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдЕрдЧрд▓реА рдмрд╛рд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛрдиреЗ рдкрд░ рдХреГрдкрдпрд╛ typescript@next рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдВред

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

рдпрд╣рд╛рдБ ClassA рдХреА рдХреЗрд╡рд▓ рдПрдХ рдореВрд▓ рдШреЛрд╖рдгрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдЦреИрд░, рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдпрд╣ npm link ред

рдЬрдм рдореИрдВ npm link рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдкреИрдХреЗрдЬ рдиреАрдЪреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд▓рд┐рдВрдХ рдмрдирд╛рддрд╛ рд╣реИред

package-c
|
-- node_modules
    |
    -- package-a
    |   |
    |   -- index.d.ts
    |   |
    |   ...
    |
    -- package-b
        |
        -- index.d.ts
        |
        -- node_modules
        |   |
        |   -- package-a
        |       |
        |       -- index.d.ts
        |       |
        |       ...
        |
        ...

рдЬреИрд╕рд╛ рдХрд┐ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреИрдХреЗрдЬ-рдП рдХреЗ рд▓рд┐рдП рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдШреЛрд╖рдгрд╛ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВред
рдпрджрд┐ рдореИрдВ npm install рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреИрдХреЗрдЬ-рдП рдХреА рдШреЛрд╖рдгрд╛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреИрдХреЗрдЬ-рдмреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рдФрд░ рдХрдо рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

рдореИрдВрдиреЗ npm link рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ред

рдХрд╛рдлреА рдЙрдЪрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдФрд░ рдХреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: рдкрд▓рдХ:

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ ClassA рдХреА рджреЛ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдбрд┐рд╕реНрдХ рдкрд░ рджреЛ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рд╕рд╣реА рд╣реИред рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрдм рд╣рдо рдЗрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╕рдорд╕реНрдпрд╛ https://github.com/Microsoft/TypeScript/issues/4800 рд╕реЗ рдкрд╣рд▓реЗ рдмрддрд╛рдИ рдЧрдИ рд╣реИ, Enums рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ рдирд┐рдпрдо рдХреЛ рдЕрд░реНрдз-рдирд╛рдордорд╛рддреНрд░ рдЪреЗрдХ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИред рд╕рдВрднрд╡рддрдГ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреА рдРрд╕рд╛ рд╣реА рдХрд░реЗрдВред

рдЯреАрдПрд╕ 1.7.5 рдХреЗ рд╕рд╛рде рдЗрд╕ рдкрд░ рд╕рднреА рд╕рдВрдмрдВрдзрд┐рдд рдкреИрдХреЗрдЬ рдПрдирдкреАрдПрдо-рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде +1ред рдореИрдВрдиреЗ рдПрдХ рдРрд╕реЗ рдЯреЗрд╕реНрдЯрдХреЗрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реЛ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдореИрдВрдиреЗ рдХреНрдпрд╛ рдХреЛрд╢рд┐рд╢ рдХреА рдереА, рдЯреАрдПрд╕ рдЙрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде рдареАрдХ рдерд╛ рдЬрд┐рд╕реЗ рдореИрдВ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ TS2345 рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реБрдЖ рджреЗрдЦрддрд╛ рд╣реВрдВ, рдФрд░ рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореИрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд .d.ts рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рднреА рдкреНрд░рддрд┐рдпрд╛рдВ рдПрдХ рд╣реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╕реАрдорд▓рд┐рдВрдХ рдереАрдВ, рдЗрд╕рд▓рд┐рдП рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдкреНрд░рдХрд╛рд░ рдХреЗ рднреАрддрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдШреЛрд╖рдгрд╛рдПрдВ рдХреА рдЧрдИ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХреА рдЧрдИ рддреНрд░реБрдЯрд┐ рдиреЗ рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬреЛ рджреЛ рдЕрд╕рдВрдЧрдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЙрд╕ рдЪреАрдЬрд╝ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реВрдВ рдЬрд┐рд╕ рдкрд░ рдореИрдВ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЕрднреА рдпрд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рджреЛ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред

рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдк рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкрд░ <any> рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рджреВрд╕рд░реЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдиреЛрдЯреЗрд╢рди рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдБ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрд▓рдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

EDIT: рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ рдХрд┐ NPM рд▓рд┐рдВрдХ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ

рдЕрдзрд┐рд╕реВрдЪрд┐рдд рдЯреАрдПрд╕ 1.8 рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЙрдиреНрдирдд рд╣реИ рдФрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЙрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рднреА рдореМрдЬреВрдж рд╣реИред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдореЗрдВ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╣рдорд╛рд░реЗ рдХреБрдЫ рдХреЛрдб рдмреЗрд╕ рдореЗрдВ рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рд╣рдордиреЗ рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ package.json рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдареАрдХ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдм рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди npm link рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЗрд╕реЗ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред

рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдореЗрд░реА рдорджрдж рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ?

рдореИрдВ Lerna рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдЬреЛ рдЪрд╛рд░реЛрдВ рдУрд░ рд╕рд╣рд╛рдиреБрднреВрддрд┐ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рднреА рджреЗрдЦ рд░рд╣рд╛ рд╣реИред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрд╕реНрдХрд░рдг 2.0.3ред

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

export class MyClass {
  constructor(foo: Foo) {
    (this as any)._foo = foo;
  }

  get foo() {
    return (this as any)._foo as Foo;
  }
}

рд╡рд░реНрдЧ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХрдард┐рди рдирд╣реАрдВ рдерд╛, рдФрд░ рдореИрдВ рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрднреА рднреА рдмрджрд▓рдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рддрд╛, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдПрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдмрджрд▓рд╛рд╡ рдорд╛рдирддрд╛ рд╣реВрдВред

FYI рдХрд░реЗрдВ, рдореИрдВрдиреЗ рднреА npm link рдФрд░ рдпрд╣ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ рд╣реИред рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдкрд╛рдпрд╛ рд╣реИ?

@xogeny рдХреНрдпрд╛ рдЖрдк

@mhegazy рдЦреИрд░ рдореБрдЭреЗ рдКрдкрд░ рдХреА рддрд░рд╣ рдпреЗ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛрдиреЗ рд▓рдЧреАрдВ (рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдореИрдВ Observable rxjs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рдЕрд░реНрдерд╛рдд, "Observable 'рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП" рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓' рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред) рдмреЗрд╢рдХ, рдЕрдЬреАрдм рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рджреЛрдиреЛрдВ рдореИрдВ Observable рдореЙрдбреНрдпреВрд▓ рдореЗрдВ rxjs ред рд▓реЗрдХрд┐рди рдЬрд╣рд╛рдВ рдкреНрд░рдХрд╛рд░ "рдорд┐рд▓реЗ", рдореБрдЭреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реАред рдореИрдВрдиреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЦреЛрджрд╛ред рдЕрдВрддрддрдГ рдпрд╣ рдореБрджреНрджрд╛ рдорд┐рд▓рд╛ рдЬрд╣рд╛рдВ @kimamula рдиреЗ рдХрд╣рд╛ рдХрд┐ рдпрджрд┐ рдЖрдк npm link , рддреЛ рдЖрдкрдХреЛ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреАред рдореИрдВ, рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреА рддрд░рд╣, рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдХрд╛рдо рдХрд┐рдпрд╛ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдПрдХ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдпрд╛ред рдПрдХ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ, рд╕рдВрджрд░реНрдн rxjs рдмрдЬрд╛рдп)ред

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

рд╣рдордиреЗ TS2.0 рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ npm link рдкрд░рд┐рджреГрд╢реНрдп (https://github.com/Microsoft/TypeScript/pull/8486 рдФрд░ # 8346) рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдирдореВрдирд╛ рд╣реИ рдЬрд╣рд╛рдВ рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ npm рд▓рд┐рдВрдХ рдЕрднреА рднреА рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ?

рд╣реБрд╣ред рдореИрдВ 2.0.3 рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдБ (рдореИрдВрдиреЗ рдЬрд╛рдБрдЪ рдХреА)ред рдореИрдВ рдПрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдорд╛рдорд▓рд╛ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ред

рд╡реИрд╕реЗ, рдЖрдкрдХреЛ рдЗрди рдереНрд░реЗрдбреНрд╕ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдЯреАрдПрд╕ 2.0 рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдореБрджреНрджрд╛ рд╣реИ:

https://github.com/ReactiveX/rxjs/issues/1858
https://github.com/ReactiveX/rxjs/issues/1744

рдореЗрд░реЗ рд▓реЗрд░реНрдирд╛ рд░реЗрдкреЛ рдореЗрдВ рдЬреЛ рдореБрджреНрджрд╛ рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдХреБрдЫ рд╣рдж рддрдХ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ https://github.com/seansfkelley/typescript-lerna-webpack-sadness рдкрд░ рдЗрд╕рдХрд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдк-рдбрд╛рдЙрди рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдпрд╛ https://github.com/TypeStrong/ts-loader/issues/324 рд╡рд╣рд╛рдБ рдкрд░ рднреА рджрд╛рдпрд░ рдХрд┐рдпрд╛ рд╣реИред

рдореИрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 2.0.3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдЕрд╡рд▓реЛрдХрди рдХреЗ рд╕рд╛рде рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП

Type 'Observable<Location[]>' is not assignable to type 'Observable<Location[]>'. Property 
            'source' is protected but type 'Observable<T>' is not a class derived from 'Observable<T>'.

рдореИрдВ рдЗрд╕реЗ рдПрдХ Lerna monorepo рдкреИрдХреЗрдЬ рдореЗрдВ рднреА рдорд╛рд░ рд░рд╣рд╛ рд╣реВрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд┐рд╕реНрдЯрдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Realpath рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╢рд╛рдЦрд╛ рдХреЗ рдмрдЬрд╛рдп рд╕рд┐рдореНрдХреНрд▓рд┐рди рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╢рд╛рдЦрд╛ рдХрд╛ рднреНрд░рдордг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдорд╛рди-рд▓реЗрдХрд┐рди-рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред

рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдХреНрд░реВрд░ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдХреЛрдбрдмреЗрд╕ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧреА, рдФрд░ рдХрдареЛрд░ рдЙрдкрд╛рдп рдХрд┐рдП рдмрд┐рдирд╛ рдЖрд╕-рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЖрдк рд╕рднреА рдХреЛ рдЗрд╕реЗ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдордирд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рдЗрд╕рдХреЗ рдпреЛрдЧреНрдп рд╣реИред ЁЯШД

рдпрд╣ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдЬрд╣рд╛рдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдРрдк рд╣реИ рдЬреЛ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдП рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдП рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдмреА рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдРрд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдореЗрдВ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдмреА рд╕реЗ рдЯрд╛рдЗрдк рд╣реЛрддреЗ рд╣реИрдВред рдРрдк рдФрд░ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдП рджреЛрдиреЛрдВ npm link рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдмреА рдФрд░ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рдкреНрд░рдХрд╛рд░ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╣реА рдмрд╛рдд рдХрд╛ рд╡рд░реНрдгрди рд╣реИред

рдЗрд╕рд╕реЗ рдЧрд╣рд░реА рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдЕрдкрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ private рдФрд░ protected рдкреНрд░реЙрдкрд░реНрдЯреАрдЬрд╝ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдФрд░ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдХрдЧрд╛рд░ рдкрд░ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рд╕рдордп рдЦреЛ рдЪреБрдХрд╛ рд╣реВрдВ :

TSError: тип Unable to compile TypeScript
tests/helpers/test-application.ts (71,11): Argument of type '{ initializers: Initializer[]; rootPath: string; }' is not assignable to parameter of type 'ConstructorOptions'.
  Types of property 'initializers' are incompatible.
    Type 'Initializer[]' is not assignable to type 'Initializer[]'.
      Type 'Application.Initializer' is not assignable to type 'Application.Initializer'.
        Types of property 'initialize' are incompatible.
          Type '(app: Application) => void' is not assignable to type '(app: Application) => void'.
            Types of parameters 'app' and 'app' are incompatible.
              Type 'Application' is not assignable to type 'Application'.
                Types of property 'container' are incompatible.
                  Type 'Container' is not assignable to type 'Container'.
                    Types of property 'resolver' are incompatible.
                      Type 'Resolver' is not assignable to type 'Resolver'.
                        Types of property 'ui' are incompatible.
                          Type 'UI' is not assignable to type 'UI'.
                            Property 'logLevel' is protected but type 'UI' is not a class derived from 'UI'. (2345)

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдк рд╕рднреА рдХреА рд╕рд░рд╛рд╣рдирд╛ рдЗрд╕ рдореЗрдВ рджреЗрдЦ; рдзрдиреНрдпрд╡рд╛рдж!

@tomdale рдХреНрдпрд╛ рдЖрдк Webpack, tsc рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдмрд┐рд▓реНрдб рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдореЗрд░рд╛ рдореБрджреНрджрд╛ рдХреЗрд╡рд▓ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╡реЗрдмрдкреИрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдореЗрд░реА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рд░реЗрдкреЛ рджреЗрдЦреЗрдВ)ред

@seansfkelley рдЬреЛ https://github.com/TypeStrong/ts-node рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ

рдпрд╣ рд╕рд╣реА рд╣реИ, рдпрд╣ ts-node (рд░реВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдирд┐рд░реНрднрд░рддрд╛ tsc рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдкреИрдХреЗрдЬ рд╣реИрдВред

рдореИрдВ рдмрд╕ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдФрд░ рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЕрдкрдиреА рдкреАрда рдХреЗ рдЫреЛрд░ рдХреЛ рдХрдИ рдЫреЛрдЯреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди, рд╣рдореЗрдВ рдЕрдХреНрд╕рд░ рдЕрдкрдиреЗ рд░реЗрдкреЛ рдХреЛ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореИрдВ рдЬрд┐рд╕ рд╡рд┐рд╢реЗрд╖ рдореБрджреНрджреЗ рдкрд░ рднрд╛рдЧ рдЧрдпрд╛, рдЙрд╕рдиреЗ рдореБрдЭреЗ рдпрд╣ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ rxjs рд╡реЗрдзрд╢рд╛рд▓рд╛рдУрдВ рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИ:


// in repo A
export class HttpAdapter {
    request(url: string, options?: HttpRequestOptionsArgs): Observable<HttpResponse> {
        return Observable.of({});
    }
}

// in repo B
export class HttpRequestAdapter implements HttpAdapter {
    request(url: string, options?: HttpRequestOptionsArgs): Observable<HttpResponse> {
        return Observable.of({});
    }
}

рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЕрдЧрд░ рдореИрдВ npm link рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдХрд░рддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рдорд┐рд▓рддрд╛ рд╣реИ:

Error:(10, 14) TS2420:Class 'HttpRequestAdapter' incorrectly implements interface 'HttpAdapter'.
  Types of property 'request' are incompatible.
    Type '(url: string, options?: HttpRequestOptionsArgs) => Observable<HttpResponse>' is not assignable to type '(url: string, options?: HttpRequestOptionsArgs) => Observable<HttpResponse>'.
      Type 'Observable<HttpResponse>' is not assignable to type 'Observable<HttpResponse>'.
        Property 'source' is protected but type 'Observable<T>' is not a class derived from 'Observable<T>'.

рдПрдХрдорд╛рддреНрд░ рд╕реБрдЭрд╛рд╡ рдЬреЛ рдореИрдВ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ рд╡рд╣ рд╣реИ private рд╕реЗ рдмрдЪрдирд╛ред рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдХрд╛рд░рдг private рд╕рд╛рде рдХрд┐рд╕реА рднреА рдкреИрдХреЗрдЬ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреЗрд╡рд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ-рд╢реИрд▓реА _ рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВ рдЗрд╕реЗ https://github.com/Microsoft/TypeScript/issues/7755 рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рдЬреЛ рдЗрд╕реА рддрд░рд╣ рдХреА рдЪрд░реНрдЪрд╛ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ private рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдХреЗ рдмрдЬрд╛рдп рдирд╛рдордорд╛рддреНрд░ рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдХрд┐рдХ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдЦреБрдж рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрд╕реНрдХрд░рдг рдЕрдВрддрд░ (рдЬреИрд╕реЗ рдПрдирдкреАрдПрдо 2 рдпрд╛ npm link ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред

@blakeembrey рдЬрдм рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдирд┐рдЬреА рд╕реЗ рдмрдЪреЗрдВ, рддреЛ рдХреНрдпрд╛ рдЖрдк рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реВрдВ? рдореИрдВ рдорд╛рди рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдЯрд╛рдЗрдк рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдирд╣реАрдВ?

@ рдЬреЗрдлрд╝ рдЕрдкреНрд░реЛрд▓реА рд╣рд╛рдБ, рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЖрдкрдХреА рдЧрд▓рддреА рдкрд░ рдирд╣реАрдВред рдпрд╣ Observable ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ private рд╕рд▓рд╛рд╣ рдмрд╣реБрдд рд╣реА рдкрддрд▓реА рд╣реИ рдФрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реИ rxjs рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ private рдЙрдирдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВрдиреЗ рдЬреНрдпрд╛рджрд╛рддрд░ рдЯрд┐рдкреНрдкрдгреА рдХреА рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрдиреБрднрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рдиреЗ рд╕реЗ рдмрдЪрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд▓рдЧрд╛ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдмрдЬрд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рд╡реЗ https://github.com/Microsoft/TypeScript/issues/ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ @tomdale рдиреЗ private рдФрд░ protected рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛, рдореИрдВрдиреЗ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рд╣реА рдРрд╕рд╛ рдХрд┐рдпрд╛ рдерд╛)ред

рдореБрдЭреЗ @mhegazy рд╕реЗ npm link рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рд╣рдореЗрдВ рдФрд░ рджреВрд╕рд░реЛрдВ рдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдХрд╣рд╛рдВ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рдЯреАрдПрд╕ 2.0+ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрд╡реАрдХреГрдд рдореБрджреНрджрд╛ рд╣реИ рдпрд╛ рдореИрдВ рд╕рд┐рд░реНрдл рдХрд╣реАрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдпрд╛рдж рдХрд░ рд░рд╣рд╛ рд╣реВрдБ?

рдореБрдЭреЗ рдпрд╣ рд╡рд╣реА рдореБрджреНрджрд╛ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рдпрд╣ npm link рдХрд╛рд░рдг рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЕрдЧрд░ рдореИрдВ npm install file.tar.gz рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рднреА рдореБрдЭреЗ рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛ред рдпрд╣рд╛рдБ рддреНрд░реБрдЯрд┐ рд╣реИ:

app/app.component.ts(46,5): error TS2322: Type 'Observable<boolean | Account>' is not assignable to type 'Observable<boolean | Account>'.
  Property 'source' is protected but type 'Observable<T>' is not a class derived from 'Observable<T>'.

рдпрд╣рд╛рдБ рдореЗрд░рд╛ app.component.ts рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

export class AppComponent implements OnInit {
  private user$: Observable<Account | boolean>;
  private loggedIn$: Observable<boolean>;
  private login: boolean;
  private register: boolean;

  constructor(public stormpath: Stormpath) {}

  ngOnInit() {
    this.login = true;
    this.register = false;
    this.user$ = this.stormpath.user$;
    this.loggedIn$ = this.user$.map(user => !!user);
  }

рдпрд╣ this.user$ рд▓рд╛рдЗрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░ рд░рд╣рд╛ рд╣реИред Stormpath рдореЗрдВ user$ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ:

@Injectable()
export class Stormpath {

  user$: Observable<Account | boolean>;

@xogeny Odd, рдореЗрд░реА рд╕рдордЭ рдпрд╣ рдереА рдХрд┐ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреА рдкрд╣рдЪрд╛рди рдлрд╝рд╛рдЗрд▓ рд╕реНрдерд╛рди рд╕реЗ рдЬреБрдбрд╝реА рд╣реБрдИ рдереА, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╡реЗ рд╣рдореЗрд╢рд╛ npm link рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореБрджреНрджреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВ (рдХреНрдпреЛрдВрдХрд┐ npm link ed рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдХрд╛рд░рдг рдпрд╣ рд╕реНрд╡рдпрдВ рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдЧреА) ред рд╢рд╛рдпрдж рдкрд░рд┐рднрд╛рд╖рд╛ рдкрд╣рдЪрд╛рди рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдлрд╝рд╛рдЗрд▓ рд╣реИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдореЙрдбреНрдпреВрд▓ ( npm install GitHub рд╕реЗ, npm install , рдореИрдиреБрдЕрд▓ рдХреНрд▓реЛрди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рдПрдХ рджрд░реНрдЬрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╣реИрдВ, рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдШрд░реНрд╖ рднреА рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕рдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рд▓реИрдВрдбрд┐рдВрдЧ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдиреЛрдб рдХреЗ рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЖрджрд┐)ред

@blakeembrey рд╢рд╛рдпрджред рд▓реЗрдХрд┐рди рдлрд┐рд░ рдпрд╣ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рдерд╛?

рдзреНрдпрд╛рди рджреЗрдВ, рдореИрдВ рд╢рд┐рдХрд╛рдпрдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рд╕рд┐рд░реНрдл рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд╣рд▓ рд╣реЛрдиреЗ рдХреА рдХреЛрдИ рдЙрдореНрдореАрдж рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрд╣ рд╣рдорд╛рд░реЗ рдкрдХреНрд╖ рдореЗрдВ рдПрдХ рдЧрдВрднреАрд░ рдХрд╛рдВрдЯрд╛ рдХреЗ рд▓рд┐рдП рд╣реИ рд╕рднреА рдХрд╛рд░рдгреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ @jeffwhelpleyред

@xogeny рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдореИрдВ рднреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рдЗрд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░рдХреЗ рджреЗрдЦрдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ the рдореИрдВрдиреЗ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдореБрджреНрджреЛрдВ рдХреЛ рдкрдврд╝рд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдПрдХ npm link рдПрдХ рджреВрд╕рд░реЗ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рджреЛрдиреЛрдВ рдХреА рдЕрдкрдиреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ рдЬреЛ npm link ed рдкреИрдХреЗрдЬ рд╕реЗ рдкреБрди: рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдкреНрд░рддреАрдХреЛрдВ рдХреЗ рд╕рд╛рде рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИрдВред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд╕рднреА рдореБрджреНрджреЗ рджреЛ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдХрд╛рд░рдг рд╣реИрдВред npm link рдЗрд╕реЗ рдЯреНрд░рд┐рдЧрд░ рдХрд░ рджреЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рд░реЗрдкреЛ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рд╣реЛрдирд╛ рд╕рд░рд▓ рд╣реИ рдЬреЛ рдЖрдкрдиреЗ рдЕрднреА рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рднреА рдЙрд╕реА рддрд░рд╣ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдЖрдк рдЬреБрдбрд╝реЗ рд╣реИрдВред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд░рд┐рдкреНрд░реЛ рдПрдХ рдЖрд╡реЗрджрди рдХреЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрддрд░реЛрдВ рдкрд░ рдПрдХ рд╣реА рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ npm install рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЛ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ред

image

рдЗрд╕ рдзрд╛рдЧреЗ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП ... рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдмрддрд╛рдП рдЧрдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдпрд╣ (рдЕрдм рддрдХ) рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИред

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

mkdir a; cd a
npm install rxjs
echo 'import * as rx from "rxjs"; export const myObservable: rx.Observable<number>;' > index.d.ts
echo '{ "name": "a" }' > package.json

cd ..; mkdir b; cd b
npm install rxjs
npm link ../a
echo 'import * as rx from "rxjs"; import * as a from "a"; const x: rx.Observable<number> = a.myObservable;' > index.ts
tsc index.ts --target es6 --moduleResolution node

рдЪреВрдБрдХрд┐ rxjs рджреЛ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╣реИрдВ,

index.ts(1,59): error TS2322: Type 'Observable<number>' is not assignable to type 'Observable<number>'.
  Property 'source' is protected but type 'Observable<T>' is not a class derived from 'Observable<T>'.

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ рдЬреЛ рдХрдорд╛рдВрдбрд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЕрднреА рднреА рд╕рднреА рдЧрдбрд╝рдмрдбрд╝ рдХрд░ рджреЗрддрд╛ рд╣реИ: https://github.com/Microsoft/TypeScript/issues/11107#issuecomment -254003380

рд╡рд┐рдВрдбреЛрдЬ + рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2015 рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рдирдпрд╛ рдХрд╛рдо рд╣реИ рдореЗрд░реА xlib рд▓рд╛рдЗрдмреНрд░реЗрд░реА src рдФрд░ dist node_modules\xlib\src node_modules\xlib\dist рдЦрдкрдд рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ред

рдЕрдЧрд░ рдХреЛрдИ рднреА рдпрд╣ рдЪрд╛рд╣рддрд╛ рд╣реИ рддреЛ рдореЗрд░реА рд░реЙрдмреЛрдХреЙрдкреА рдмреИрдЪ рдлрд╝рд╛рдЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ:

:rerunloop
    <strong i="14">@echo</strong> watching for changes to project files..............  (Ctrl-C to cancel)

    <strong i="15">@rem</strong> xlib --> blib and slib
    <strong i="16">@robocopy</strong> .\xlib\src .\blib\node_modules\xlib\src *.*  /MIR /NJH /NJS /NDL /XD .git
    <strong i="17">@if</strong> NOT "%errorlevel%" == "0" (
        <strong i="18">@rem</strong> copy occured, so copy both

        <strong i="19">@robocopy</strong> .\xlib\dist .\blib\node_modules\xlib\dist *.*  /MIR /NJH /NJS /NDL /XD .git   
        <strong i="20">@robocopy</strong> .\xlib\src .\slib\node_modules\xlib\src *.*  /MIR /NJH /NJS /NDL /XD .git     
        <strong i="21">@robocopy</strong> .\xlib\dist .\slib\node_modules\xlib\dist *.*  /MIR /NJH /NJS /NDL /XD .git

        <strong i="22">@rem</strong>  set the src dirs readonly
        <strong i="23">@attrib</strong> +R .\blib\node_modules\xlib\src\*  /S /D
        <strong i="24">@attrib</strong> +R .\slib\node_modules\xlib\src\*  /S /D
    )
    <strong i="25">@timeout</strong> /t 1 /nobreak > NUL
<strong i="26">@goto</strong> rerunloop

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

рдореИрдВ рднреА рдЗрд╕рд╕реЗ рдЬреВрдЭ рд░рд╣рд╛ рд╣реВрдВред рд╣рдордиреЗ рдЯреАрдПрд╕ рдХреЛ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдРрдк рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ, рдЕрдм рд╣рдордиреЗ рдЗрд╕реЗ рд╕рдмрдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрдиреНрд╣реЗрдВтАж рдФрд░ рдмреВрдо рд╕реЗ рдЬреЛрдбрд╝рд╛ рд╣реИред рдЯреАрдПрд╕ рдЕрдм рд╕рдВрдХрд▓рди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА рд╕рднреА рдЯреАрдПрд╕ рдбрд┐рд╕реНрдЯ-рдЯреИрдЧ рдореЗрдВ рдПрдХ рдореБрджреНрджрд╛ рд╣реИ? рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ @rc (2.1.1) рдореЗрдВ рдпрд╣ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

@heruan рдФрд░ @ рдЬреЗрдл рдУрд╡рд░рдкреНрд▓реЗ рдЖрдк typescript@next рдПрдХ рдХреЛрд╢рд┐рд╢ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдордиреЗ рдХреБрдЫ рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЗ рддрдп рдХрд┐рдП рд╣реИрдВред рдФрд░ рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрдЕрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░реЗрдВред

@mhegazy рдореИрдВ Version 2.2.0-dev.20161129 рд╣реВрдВ рдФрд░ рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛ рд╣реИред рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ (рдЪрд▓реЛ рдЗрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯрдП рдХрд╣рддреЗ рд╣реИрдВ) рдЬрд┐рд╕рдореЗрдВ рдПрдХ "рдЗрдВрдЯрд░рдлрд╝реЗрд╕" (рдПрдХ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХрдХреНрд╖рд╛ рдХреЛ рдПрдХ рдХреЛрдг рдХреЗ рд░реВрдк рдореЗрдВ 2 рдбреАрдЖрдИрдЬреА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ) рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:

export class ServerAdapter {
    start(opts: ServerOptions): Observable<any> {
        return null;
    }
}

рдлрд┐рд░ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ (рдЗрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯрдмреА рдХрд╣рддреЗ рд╣реИрдВ) рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХреА рдкрд╣рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ:

export class RestifyServerAdapter implements ServerAdapter {
    start(opts: ServerOptions): Observable<any> {
        let server = restify.createServer();
        this.addPreprocessors(server);
        this.addRequestHandler(server, opts);
        return this.startServer(server, opts);
    }

   // more stuff here that is not relevant to this issue
}

рдЬрдм рдореИрдВ ProjectB рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрдХрд▓рди рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ npm link ProjectA ProjectB рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдФрд░ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ tsc рдлрд┐рд░ рд╕реЗ рдореБрдЭреЗ рдорд┐рд▓рддрд╛ рд╣реИ:

Types of property 'start' are incompatible.
    Type '(opts: ServerOptions) => Observable<any>' is not assignable to type '(opts: ServerOptions) => Observable<any>'. Two different types with this name exist, but they are unrelated.
      Type 'Observable<any>' is not assignable to type 'Observable<any>'. Two different types with this name exist, but they are unrelated.
        Property 'source' is protected but type 'Observable<T>' is not a class derived from 'Observable<T>'.

рдореИрдВ рдПрдХ рдирдХрд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдирдХрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдпрд╛рдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рджреЛрд╣рд░рд╛рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реВрдВред @ рдЬреЗрдл рдУрд╡рд░рдкреНрд▓реЗ рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреА рдирдХрд▓ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдирдХрд▓реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд▓рд░реНрдирд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдареАрдХ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдпреЛрдЧреНрдп рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

@heruan рдореИрдВ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред

рдПрдХ, FYI, рд╣рд╛рд▓рд╛рдВрдХрд┐ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЖрд╕рдкрд╛рд╕ рдХреЛрдИ рдХрд╛рдо рдорд┐рд▓ рдЧрдпрд╛ рд╣реЛрдЧрд╛ред рдкреНрд░реЙрдмреНрд▓рдо рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЕрдЧрд░ рдореИрдВ ProjectA рдФрд░ ProjectB рджреЛрдиреЛрдВ рдореЗрдВ npm link rxjs рд╣реЛред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, ProjectA рдФрд░ ProjectB рджреЛрдиреЛрдВ рдПрдХ рд╣реА рд╕рдЯреАрдХ rxjs рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд┐рдирд╛, рд╡реЗ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рднрд▓реЗ рд╣реА рдПрдХ рд╣реА рд╕рдВрд╕реНрдХрд░рдг):

рдпрджрд┐ рдЖрдк ProjectB рд╕реЗ рд╕рд┐рд░реНрдл npm link ProjectA рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ:

  • ProjectB рдиреЛрдб_modules / rxjs рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ
  • ProjectA рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ / рдкреНрд░реЛрдЬреЗрдХреНрдЯрдП рдореЗрдВ рдПрдХ рд╕рд┐рдореНрд▓рд┐рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдореМрдЬреВрдж рд╣реИ рдФрд░ рдпрд╣ рдЬрд┐рди рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рд╣реИ, рд╡рд╣ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ / рдкреНрд░реЛрдЬреЗрдХреНрдЯрдП / рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ / рдЖрд░рдПрдХреНрд╕рдЬреЗ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рджреЛрдиреЛрдВ рдореЗрдВ npm link rxjs , рддреЛ рдЙрди рджреЛрдиреЛрдВ рдЖрд░рдПрдХреНрд╕рдЬреЗрдПрд╕ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рдПрдирдкреАрдПрдо рд╕реНрдерд╛рди рдкрд░ рд╕рд╣рд╛рдиреБрднреВрддрд┐ рджреА рдЬрд╛рдПрдЧреАред

рд╡реИрд╕реЗ рднреА, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрднреА рднреА рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ ... рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ рдпрд╛ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ (рдПрдХ рдмрд╛рд░ рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рджреЗрдЦреВрдВрдЧрд╛), рд▓реЗрдХрд┐рди рдореЗрд░реЗ рджреЛ рдХрд╛рдо (рдпрд╛рдиреА рдкреНрд░реЛрдЬреЗрдХреНрдЯрдП рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯрдмреА) рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рдЬреА рдПрдирдкреАрдПрдо рд░реЗрдкреЛ рд╣реИрдВред

рд╕рдВрдХреЗрдд рдХреЗ рд▓рд┐рдП @Jffreadpley рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ рдореИрдВ

рдпрд╣рд╛рдБ рдХреЛрдИ рднреА рдЗрд╕реЗ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ?

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ npm link рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдкреНрд░реЛрдбрдХреНрд╢рди рдмрд┐рд▓реНрдб рдкрд░ рднреА рдорд┐рд▓реЗрдЧреА, рдЬрдм рдЖрдкрдХреА рд╕рд╛рдЭрд╛ рдирд┐рд░реНрднрд░рддрд╛ рдПрдХ рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреА рд╣реИред

рдЕрд░реНрдерд╛рддред ProjectA рдХреЛ [email protected] рдФрд░ ProjectB [email protected] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ

рдЬрдм рдЖрдк ProjectA рдХреЛ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ ProjectB рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рднреА рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░ рд╣реЛрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рджреЛ Observable рдШреЛрд╖рдгрд╛рдПрдБ рд╣реЛрдВрдЧреА, рдПрдХ node_modules/rxjs рдФрд░ рдПрдХ node_modules/project_a/node_modules/rxjs

рдЖрдк ProjectA рдореЗрдВ rxjs рд╕рдВрд╕реНрдХрд░рдг рдХреЛ ~4.9.0 рдХреБрдЫ рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдХрд░ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ npm install рдХреЛ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп ProjectB рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдпрд╣ рди рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рдХрд╛рд╕ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдореБрджреНрджрд╛ рд╣реИред

@ Andy-ms рдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯрд┐рдВрдЧред рдХрд▓ рдлрд┐рд░ рд╕реЗ рдирд╡реАрдирддрдо 2.0.x рдХреЗ рд╕рд╛рде рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдЕрднреА рднреА рдпрд╣ рдерд╛ред

рдореИрдВ рдЗрд╕реЗ Angular 1 рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/10082#issuecomment -253023107

рдЖрдЬ рдлрд┐рд░ рд╕реЗ рднрд╛рдЧ рдЧрдпрд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рд╣рд╛рдиреБрднреВрддрд┐ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ред рдореЗрд░рд╛ рд╕реЗрдЯрдЕрдк рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реИ:

node_modules/
folder
  another_folder
    node_modules/ (symlinked to ../../node_modules)
    app/ (angular1 app in typescript)
    tsconfig.json
    (other build files)

рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ @types/angular , tsc рдареАрдХ рдЪрд▓рддрд╛ рд╣реИред рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдкреВрд░рд╛ рд╕реВрдЯ ( @types/angular-{animate,cookies,mocks,resource,route,sanitize} ) рд╣реИ рддреЛ рдореБрдЭреЗ рдЯрд╛рдЗрдк рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рднрд╛рд░ рдорд┐рд▓рдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:

$ npm run tsc

> [email protected] tsc D:\work\angular.io\public\docs\_examples\upgrade-phonecat-1-typescript\ts
> tsc

../../node_modules/@types/angular/index.d.ts(17,21): error TS2300: Duplicate identifier 'angular'.
../../node_modules/@types/angular/index.d.ts(18,21): error TS2300: Duplicate identifier 'ng'.
app/app.animations.ts(5,3): error TS2339: Property 'animation' does not exist on type 'IModule'.
app/app.config.ts(6,45): error TS2305: Module 'angular' has no exported member 'route'.
app/core/checkmark/checkmark.filter.spec.ts(5,22): error TS2339: Property 'mock' does not exist on type 'IAngularStatic'.
app/core/phone/phone.service.spec.ts(18,22): error TS2339: Property 'mock' does not exist on type 'IAngularStatic'.
app/core/phone/phone.service.spec.ts(23,18): error TS2339: Property 'expectGET' does not exist on type 'IHttpBackendService'.
app/core/phone/phone.service.spec.ts(30,18): error TS2339: Property 'verifyNoOutstandingExpectation' does not exist on type 'IHttpBackendService'.
app/core/phone/phone.service.spec.ts(31,18): error TS2339: Property 'verifyNoOutstandingRequest' does not exist on type 'IHttpBackendService'.
app/core/phone/phone.service.spec.ts(39,18): error TS2339: Property 'flush' does not exist on type 'IHttpBackendService'.
app/core/phone/phone.service.ts(5,33): error TS2305: Module 'angular' has no exported member 'resource'.
app/phone-detail/phone-detail.component.spec.ts(5,22): error TS2339: Property 'mock' does not exist on type 'IAngularStatic'.
app/phone-detail/phone-detail.component.spec.ts(18,46): error TS2305: Module 'angular' has no exported member 'route'.
app/phone-detail/phone-detail.component.spec.ts(20,20): error TS2339: Property 'expectGET' does not exist on type 'IHttpBackendService'.
app/phone-detail/phone-detail.component.spec.ts(32,20): error TS2339: Property 'flush' does not exist on type 'IHttpBackendService'.
app/phone-detail/phone-detail.component.ts(7,37): error TS2305: Module 'angular' has no exported member 'route'.
app/phone-list/phone-list.component.spec.ts(6,22): error TS2339: Property 'mock' does not exist on type 'IAngularStatic'.
app/phone-list/phone-list.component.spec.ts(15,20): error TS2339: Property 'expectGET' does not exist on type 'IHttpBackendService'.
app/phone-list/phone-list.component.spec.ts(26,20): error TS2339: Property 'flush' does not exist on type 'IHttpBackendService'.
node_modules/@types/angular-resource/index.d.ts(192,40): error TS2305: Module 'angular' has no exported member 'resource'.
node_modules/@types/angular/index.d.ts(17,21): error TS2300: Duplicate identifier 'angular'.
node_modules/@types/angular/index.d.ts(18,21): error TS2300: Duplicate identifier 'ng'.

рдореИрдВрдиреЗ рдЗрд╕реЗ рдЖрдзрд╛рд░ ../../node_modules/@types typeRoots рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреЗ tsconfig.json рдЬреЛрдбрд╝рдХрд░ рддрдп рдХрд┐рдпрд╛:

    "typeRoots": [
      "../../node_modules/@types/"
    ]

рдореИрдВрдиреЗ рд╕реНрдерд╛рдиреАрдп node_modules/@types рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред

@heruan рдПрдХ рд╣реИрдХ рдЬреЛ рдореИрдВрдиреЗ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рд╡рд╣ рд╣реИ lerna рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд▓рд┐рдВрдХрд┐рдВрдЧ / рдЕрдирд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА npm рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ред рддреЛ, рдЖрдк рдХреБрдЫ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ lerna run link рдФрд░ рдлрд┐рд░ рдЖрдкрдХреЗ рд╕рднреА рдкреИрдХреЗрдЬ рдореЗрдВред рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ npm рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ, рдЬрд┐рд╕реЗ link рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рднреА npm рд▓рд┐рдВрдХрд┐рдВрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ) npm link rxjs ред рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИред

@jeffwhelpley рддреБрдо рдпрд╣рд╛рдБ рдЕрдкрдиреЗ рд╕рдорд╛рдзрд╛рди рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@yvoronen рдореИрдВ рдЕрдкрдирд╛ рд╕рднреА рдХреЛрдб рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИред рдПрдХ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░, рдореБрдЭреЗ рдЬреЛ рдХреБрдВрдЬреА рдорд┐рд▓реА рд╣реИ, рд╡рд╣ рди рдХреЗрд╡рд▓ рдЙрди рд╕рднреА рд╕реНрдерд╛рдиреАрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП npm рд▓рд┐рдВрдХ рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ, рдЬреЛ рди рдХреЗрд╡рд▓ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдЙрди рдмрд╛рд╣рд░реА рдкрд░рд┐рд╡рд╛рджреЛрдВ рдХреЛ рднреА npm рд▓рд┐рдВрдХ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреЗ рд╣реИрдВ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ rxjs рдХреА рд╡рдЬрд╣ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдирд┐рдЬреА рд╕рдВрд╕реНрдХрд░рдг)ред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЕрдкрдиреА рд╕рднреА рд╕реНрдерд╛рдиреАрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП lerna рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ lerna run link рдЪрд▓рд╛рддрд╛ рд╣реВрдВред рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рджреГрд╢реНрдпреЛрдВ рдХреЗ рддрд╣рдд рдпрд╣ npm run link рд╣реИред рддреЛ, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдореЗрдВ link рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд░реЗрдВ:

  "scripts": {
    "link": "npm link my-local-project1 && npm link my-local-project2 && npm link rxjs || true",
    "unlink": "npm unlink my-local-project1 && npm unlink my-local-project2 && npm unlink rxjs && npm i || true"
  }

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдЕрдЧрд░ рдЖрдк рдХрд┐рд╕реА рднреА рд╕рд╡рд╛рд▓ рд╣реИред

рдореИрдВ рдПрдХ рдЕрджреНрдпрддрди рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдПрдХ рдСрдлрд╣реИрдВрдб рдПрдХреНрд╕рдЪреЗрдВрдЬ рд╕реЗ рдореИрдВрдиреЗ

  • рдПрдХ рд╕рдорд╛рдзрд╛рди рдЬреЛ рд╣рдо рдЙрдирдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЙрдирдХреЗ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдирд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛, рдЗрд╕рдХреА рдкреВрд░реА рдЬрд╛рдирдХрд╛рд░реА рдореЗрд░реЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИред
  • рдПрдХ рдЕрдиреНрдп рд╕рд┐рдореНрдмрд▓рд┐рди рдХреА "рд╕рд╣реА" рдкрд╣рдЪрд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрде рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рд╕реАрдорд┐рдд рд╣реИ рдЬрдм рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдПрдХ рд╣реА рдкреИрдХреЗрдЬ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдорд╛рдорд▓реЛрдВ рдХреА рдПрдХ рд╕рднреНрдп рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдХрд┐ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рд╣реИ? рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ
рд╡рд┐рднрд┐рдиреНрдиред

Thu рдкрд░, 12 рдЬрдирд╡рд░реА, 2017, 3:14 AM рдирд┐рдХреЛрд╕ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рдзреНрдпрд╛рди рджреЗрдВ, рдореИрдВ AFAIK рдкреНрд░рдХрд╛рд░ рдпрд╛ npm рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

[рдЫрд╡рд┐: рдЫрд╡рд┐]
https://cloud.githubusercontent.com/assets/216566/21887548/451d059c-d8b8-11e6-86d1-50afae4e5c2f.png

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/Microsoft/TypeScript/issues/6496#issuecomment-272137732 ,
рдпрд╛ рдзрд╛рдЧрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AAUAmcMXodOvU7coymMqGzTofD4pMagpks5rRgsogaJpZM4HFcWl
ред

@dobesv рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрдкреВрд░реНрдг рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреНрдпреЛрдВ рджреЗрдЦрддреЗ рд╣реИрдВред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧ рдШреЛрд╖рдгрд╛ рдХреЛ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдЪ рдкрде рд╕реЗ рд╕рд╣рд┐рд╖реНрдгреБ рдкрде рдХреЛ рдЕрд▓рдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╕рдорд╛рдзрд╛рди рдпрд╛ рддреЛ рд╣реИ

  1. рд╕рд┐рдорд┐рд▓рд┐рдВрдХ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВред
  2. рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпреБрдХреНрдд рдкреИрдХреЗрдЬ рд╕рдорд╛рди рд╣реИред

@DanielRosenwasser рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдХрд┐рд╕реА рдФрд░ рдХреА рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдереА "рдЧреБрд░реБ, 12 рдЬрдирд╡рд░реА, 2017, 3:14 рдкреВрд░реНрд╡рд╛рд╣реНрди рдирд┐рдХреЛрд╕ рдкрд░ @ред *> рд▓рд┐рдЦрд╛ рдерд╛" ... рдпрд╣ рд╣реИ рдХрд┐ рдЬреЛ рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдХреНрдпрд╛ рдХрд╣рд╛ рдореИрдВ рдЕрдм рдпрд╛рдж рд╣реИ, рдореИрдВ рдЙрдирдХрд╛ рдорд╛рдирдирд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдереНрд░реЗрдб рдореЗрдВ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫ рд░рд╣реЗ рдереЗ, рдЬрд┐рд╕рдХрд╛ npm рд▓рд┐рдВрдХ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рдерд╛ред

рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдпрд╣рд╛рдБ рд╣реВрдБ рддреЛ рдореБрдЭреЗ рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдордЬрд╝реЗрджрд╛рд░ рд╣реИред рдЖрдЬ рдореЗрд░реЗ рдкрд╛рд╕ RxJS рдХреЗ рд╕рд╛рде рдПрдХ рдореБрджреНрджрд╛ рдерд╛ рдЬрд╣рд╛рдВ рдпрд╣ рд╢рд┐рдХрд╛рдпрдд рдереА рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХрд╛рд░рдг рдпрд╣ рдерд╛ рдХрд┐ HTTP рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ rxjs рдХреА рдЕрдкрдиреА рдирд┐рдЬреА рдкреНрд░рддрд┐ рдереА рдЬреЛ рдЕрдиреНрдп рд╕рднреА рд╕реЗ рднрд┐рдиреНрди рдереАред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореБрдЭреЗ рдЕрдкрдиреЗ рдиреЛрдб_рдореЙрдбрд▓ рдХреЗ рдкреЗрдбрд╝ рдореЗрдВ рдЖрд░рдПрдХреНрд╕рдЬреЗ рдХреА рдЪрд╛рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рддрд┐рдпрд╛рдВ рдорд┐рд▓реАрдВред

рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдЬреЛ рдЕрднреА рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдФрд░ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдмрдирд╛ рд░рд╣реЗрдЧрд╛ред

рдЕрдЧрд░ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдкрд╣рдЪрд╛рди рдореЗрдВ рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рд╛рдЗрд▓рдирд╛рдо рдХреА рдпрд╣ рдкреВрд░реА рдЕрд╡рдзрд╛рд░рдгрд╛ рдЪрд▓реА рдЧрдИ рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ npm рд▓рд┐рдВрдХ рдореБрджреНрджрд╛ рднреА рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдореИрдВ рдЕрднреА рднреА рдереЛрдбрд╝рд╛ рдлрдЬреА рд╣реВрдБ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ ... рдореИрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╣реВрдБред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЬреЛ рдЖрднрд╛рд╕ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ "рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ" рдмрд╛рдд рдиреЗ рдореБрдЭреЗ рдЙрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдХрд╛рдлреА рдЙрд▓рдЭрди рдкреИрджрд╛ рдХрд░ рджреА рд╣реИ рдЬрд┐рдирдХрд╛ рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдЖрдпрдирд┐рдХ 2 рдФрд░ рдПрдВрдЧреБрд▓рд░ 2 рдФрд░ рдЖрд░рдПрдХреНрд╕рдЬреЗ)ред

рдЦреИрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдЕрднреА рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреА рдкрд╣рдЪрд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреВрд░ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕ рдмрд╛рдд рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХрд╛рдзрд┐рдХ рдкреИрдХреЗрдЬ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХреИрдиреЛрдирд┐рдХрд▓ рдкрде (рд╕рд┐рдорд▓рд┐рдВрдХ рдХреЗ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ? рдпрджрд┐ рдПрдХ рдкреЗрдбрд╝ рдХреЗ рднреАрддрд░ рдХрдИ рдкреИрдХреЗрдЬ рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ, рддреЛ рдЙрдирдХреЗ рдкрд╛рд╕ рдХрдИ рд╡рд┐рд╣рд┐рдд рдкреВрд░реНрдг рдорд╛рд░реНрдЧ рд╣реЛрдВрдЧреЗ, рд╣реИ рдирд╛?

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВрдиреЗ рдЗрд╕реЗ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛, рдФрд░ рдпрд╣ рдЯрд┐рдкреНрдкрдгреА рдЗрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреА рд╣реИ:
https://github.com/Microsoft/TypeScript/issues/6496#issuecomment -257016094

exclude рдФрд░ compilerOptions.typeRoots рдХреЛ tsc рджреНрд╡рд╛рд░рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рддрд╛рдХрд┐ рд╕рд┐рдореНрдкреНрд▓реЗрдХреНрд╕ рдХрд┐рдП рдЧрдП рд░рд╛рд╕реНрддреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛
рдпрд╣ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдкрде рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рд╕рд┐рдорд▓рд┐рдВрдХ рдХреЛ рд╣рд▓ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдпрд╣ рдЕрдкрд╡рд░реНрдЬрд┐рдд рдкреИрдЯрд░реНрди рдХреЛ рдирд╣реАрдВ рд╕рдордЭ рд░рд╣рд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдкрд╛рд╕ G:\www\cim-service-locator npm npm link cim-service-locator рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред G:\www\cim-backend рдореЗрдВ рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрде рдкрд░, рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИрдВ:

crop

рдореИрдВ рдмрд╛рд╣рд░ / рд╢рд╛рдорд┐рд▓ / typeRoot рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди tsc рдЙрдиреНрд╣реЗрдВ рдЕрдирджреЗрдЦрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред 2.2-dev.20170131 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рд╣рдо "npm рд▓рд┐рдВрдХ" (@waldekmastykarz рджреНрд╡рд╛рд░рд╛ рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдЧрдИ SPFx рд╕рдорд╕реНрдпрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдФрд░ "npm рд▓рд┐рдВрдХ" рдХреЗ рдмрд┐рдирд╛ рднреА (рдмрдЧ # 11436 рджреЗрдЦреЗрдВ) рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдореИрдВрдиреЗ рдЕрдВрддрддрдГ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдореНрдкрд╛рдЗрд▓рд░ рдХреА рд╕рдЦреНрддреА рдЕрд╕рдВрдЧрддрддрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рд╣реИ рдЬреЛ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдирд┐рд░рд╛рд▓рд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рдХрд╛рд░рдг рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

A
+---B<strong i="8">@1</strong>
+---C
|   +---B<strong i="9">@2</strong>   <--- first copy of ClassB extends ClassE version 3.4
|   \[email protected]
+---D
|   \---B<strong i="10">@2</strong>   <--- second copy of ClassB extends ClassE version 3.5
\[email protected]

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдмреА @ 2 рдХреЛ рдП @ рдмреА рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред рдЕрдм, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ ClassB ClassE рд╕реЗ рдирд┐рдХрд▓рддрд╛ рд╣реИ, рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реИ:

рдмреА / package.json

{
  "name": "B",
  "version": "2.0.0",
  "dependencies": {
    "E": "^3.0.0",
    ...
}

рдпрджрд┐ C рдХрд╛ рдкреИрдХреЗрдЬред Json [email protected] рдХреЗ рд▓рд┐рдП рдкреВрдЫрддрд╛ рд╣реИ, рддреЛ рдореЗрдВ рдЕрд╕рдВрдЧрдд рд╣реИрдВред рдХреЛрдб рд░рдирдЯрд╛рдЗрдо рдкрд░ рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдкрдиреЗ рдЙрдиреНрд╣реЗрдВ рдкрд░рд╕реНрдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИред

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, TS2345 рдЙрд╕ рдЧрд▓рддреА рдХреЛ рд░реЛрдХреЗрдЧрд╛, рдЬреЛ рдЕрдЪреНрдЫреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ: рдпрджрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рдиреЗ рджреЛ рдХреНрд▓рд╛рд╕рдмреА рдкреНрд░рддрд┐рдпреЛрдВ рдХреЛ рдмрд░рд╛рдмрд░ рдорд╛рдирд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╕рд┐рд╕реНрдЯрдо рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрдЧрдд рд╣реЛрдЧрд╛ рдФрд░ рдирд┐рдпрддрд╛рддреНрдордХ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрдЧрд╛ред

рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рд▓рд┐рдП TS2345 рдЬреНрдпрд╛рджрд╛рддрд░ рдЧрд▓рдд рдЕрд▓рд╛рд░реНрдо рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИред рдпреЗ рдЭреВрдареЗ рдЕрд▓рд╛рд░реНрдо рд▓реЛрдЧреЛрдВ рдХреЛ рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рдмреАрдЪ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рдХрд┐рд╕реА рднреА" рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдиреНрдп рдЧрд▓рддрд┐рдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рд╕рдЦреНрддреА рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рд░рд╣реА рд╣реИред

рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реБрдзрд╛рд░ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:

рдпрджрд┐ рдпреЗ рд╕рднреА рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╕рддреНрдп рд╣реИрдВ, рддреЛ рдирд┐рдЬреА рд╕рджрд╕реНрдпреЛрдВ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП TS2345 рдХреА рд░рд┐рдкреЛрд░реНрдЯ рди рдХрд░реЗрдВ:

  1. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рд╛рдорд╛рдиреНрдп рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрддрдЦ-рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрдЧрдд рд╣реИрдВ
  2. рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рдорд╛рди рдирд╛рдо рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрдХреНрд╖рд╛рдПрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ (рдкреИрдХреЗрдЬ рдХреЗ рдЕрдиреБрд╕рд╛рд░)
  3. рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдЙрдирдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рд╣реЛрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП "./lib/blah/Bdts")

рдпрджрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рдорд╛рдирджрдВрдб рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рддреЛ TS2345 рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдареАрдХ рд╣реИред

@iclanton @ nicpape-msft

@seansfkelley рд╡реЗрдмрдкреИрдХ рддреНрд░реБрдЯрд┐ рдХреЛ рдЯрд╛рдЗрдкрд╕реНрдЯреНрд░реЙрдиреНрдЧ / ts-loader # 468 рджреНрд╡рд╛рд░рд╛ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ,
рдХрд┐рд╕реА рдиреЗ рд╣рд▓ рдвреВрдВрдв рд▓рд┐рдпрд╛ ??
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ рдЬрдм рдореИрдВ рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ RxJS рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВред
рдзрдиреНрдпрд╡рд╛рдж ;)

рдирдорд╕реНрддреЗ, рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЪрд╛рд░реЛрдВ рдУрд░ рд╡реЗрдзрд╢рд╛рд▓рд╛рдУрдВ рдХреЛ рд▓рдкреЗрдЯрдирд╛ рд╣реИ рдЬреЛ Observable#from рд╕рд╛рде рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдЕрднреА рддрдХ рдХреЛрдИ рд╣рд▓ рдирд╣реАрдВ рдирд┐рдХрд▓рд╛ред ?

рдпрд╣рд╛рдВ рджреЛ рдореБрджреНрджреЗ рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВред

рдбреБрдкреНрд▓реАрдХреЗрдЯ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЯреАрдПрд╕-рд▓реЛрдбрд░ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдХрдВрдкрд╛рдЗрд▓рд░ рдПрдкреАрдЖрдИ рдХреЛ рдЕрд╡реИрдз рдЗрдирдкреБрдЯ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ TypeStrong / ts-loader # 468 рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред

рджреВрд╕рд░рд╛ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдкреИрдХреЗрдЬ (рд╕рдорд╛рди npm рдкреИрдХреЗрдЬ + рд╡рд░реНрдЬрди) рд╣реИ, рддреЛ рджреЛ рдиреЗрд╕реНрдЯреЗрдб рдлреЛрд▓реНрдбрд░ рдореЗрдВ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рджреЛ рдмрд╛рд░ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд ( npm link рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ), рдПрдирдо рдпрд╛ рдирд┐рдЬреА рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде, рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реБрдПред рдЗрди рджреЛ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдЕрд╕рдВрдЧрдд рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛрдВрдЧреЗред
рдпрд╣ рдореБрджреНрджрд╛ рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХ рд╢рд╛рдорд┐рд▓ рд╣реИ рдФрд░ рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ "рдбреБрдкреНрд▓рд┐рдХреЗрдЯ" рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

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

рдЬреНрдЮрд╛рдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдПрдХ рдорд▓реНрдЯреА-рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдЧрд╛, рдЕрд░реНрдерд╛рдд рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдХрд┐ рджреЛрдиреЛрдВ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдПрдХ рд╣реА рд▓рдХреНрд╖реНрдп рдХреЗ рд▓рд┐рдП рд╕рд┐рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рд╣реИрдВред

рд░рд╢ (рдЬреЛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ) рдФрд░ рд▓рд░реНрдирд╛ рдЗрд╕рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред

@smcatala рдЖрдк рдЕрдкрдиреЗ рд╕рдорд╛рдзрд╛рди рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдЗрд╕реЗ рддрддреНрдХрд╛рд▓ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рджред

@ leovo2708
рдореЙрдбреНрдпреВрд▓ 'рдлреВ':

import { Observable } from 'rxjs'
export function foo() {
  return Observable.of('foo')
}

рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб, рдЬреЛ рдореЙрдбреНрдпреВрд▓ 'рдлреВ' рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ:

import { Observable } from 'rxjs'
import { foo } from 'foo'

Observable.of(foo()) // wrap the returned Observable
.forEach(res => console.log(res))

@ leovo2708 рд╕рд░рд▓ рдЙрдкрд╛рдп npm link рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред

ts 2.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдПрдХ рд╣реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде npm рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд░рд╣рд╛ рд╣реВрдВ (рдЗрд╕реЗ xlib , рдЬреЛ рдХрд┐ рдореЗрд░рд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ) рдХрд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рдЖрдкрдХреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА ( xlib рдХреЗ рдореЙрдбреНрдпреВрд▓ рдЙрдкрднреЛрдХреНрддрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдиреЛрдб_рдореЙрдбрд▓реНрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ

рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рджреНрд╡рд╛рд░рд╛ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ

  1. node_modules рд╣рдЯрд╛рдПрдВ
  2. npm link xlib рдЬреЛ рдХрд┐ рдореЗрд░реА рдЦрдкрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ node_modules xlib рдХрд╛ рд╕рд┐рдВрдмрд▓ рдмрдирд╛рддрд╛ рд╣реИ
  3. npm install рдЬреЛ рдореЗрд░реА рдЦрдкрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╢реЗрд╖ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рдХрд╛ рдЕрдиреБрд╕рд░рдг рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдпрд╛ рдЬрд╛рдБрдЪрддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдореБрджреНрджрд╛ 2.2 рд╕реЗ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ / рд╕рдВрд╢реЛрдзрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ ts 2.1 рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛

рдпрджрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИ, рддреЛ рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдПрдирдореЛрдВрд╕ рдХреЗрд╕ рдХреА рдХрдИ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдПрдХ рдиреНрдпреВрдирддрдо рдкреБрди: рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд┐рдпрд╛: https://github.com/rictic/repro-npm-link-typescript-issue

@mhegazy рд╣рдо

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

tsconfig.json рдПрдХ рдкрде рдорд╛рдирдЪрд┐рддреНрд░рдг рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ, paths рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреА рдЧрдИ рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдХреЗ рдмрдЬрд╛рдп node_modules рд╕рд╣реА рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

{
  "compilerOptions": {
    "baseUrl": ".", // This must be specified if "paths" is.
    "paths": {
      "@angular/common": ["../node_modules/@angular/common"],
      "@angular/compiler": ["../node_modules/@angular/compiler"],
      "@angular/core": ["../node_modules/@angular/core"],
      "@angular/forms": ["../node_modules/@angular/forms"],
      "@angular/platform-browser": ["../node_modules/@angular/platform-browser"],
      "@angular/platform-browser-dynamic": ["../node_modules/@angular/platform-browser-dynamic"],
      "@angular/router": ["../node_modules/@angular/router"],
      "@angular/http": ["../node_modules/@angular/http"],
      "rxjs/Observable": ["../node_modules/rxjs/Observable"]
    }
  }
}

рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛: https://github.com/Microsoft/TypeScript/issues/11916#issuecomment -257130001

рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдКрдкрд░ рджрд┐рдП рдЧрдП @charpeni рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рдорд╛рди рд╣реИ, рд╕рд┐рд╡рд╛рдп рдкрде рдХреЗ "../" рдЙрдкрд╕рд░реНрдЧ рдХреЗред (рдЬреЛ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ tsconfig.json рдлрд╝рд╛рдЗрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдХреЗ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реЛрдЧреА?)

рдпрд╣ рдПрдХ рдорд╣рд╛рди рд╡рд┐рдЪрд╛рд░ рд╣реИ @charpeniред рдореИрдВрдиреЗ рдЙрд╕ рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреНрдп рд╕рдорд╛рди рдореБрджреНрджреЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рдХреЗ рд▓рд┐рдП рднреА рдЖрджрд░реНрд╢ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдпрджрд┐ рдЙрдкрднреЛрдЧ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕рд╣реА paths рд╕реЗрдЯрд┐рдВрдЧ (рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрднреЛрдЧ рдХреА рдЧрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ) рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдиреЛрдб рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рд╕реЗ рджреВрд░ рд╡рд┐рдЪрд▓рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИред рдпрджрд┐ рд╡рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ O (n) рд╣реИрдХ рдХреЗ рдмрдЬрд╛рдп O (1) рд╣реИрдХ рд╣реЛрдЧрд╛ред рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдРрд╕реА рдпреЛрдЬрдирд╛ рдиреЛрдб рд╕рдВрдХрд▓реНрдк рдХреЛ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдПрдЧреА, рдлрд┐рд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ tsconfig рдореЗрдВ рднрд░ рджреЗрдЧреАред

рдореИрдВ рдЗрди рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдЕрд░реНрдз-рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЕрдЧрд░ рдХреЛрдИ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ (рдпрд╛ рдорджрдж ...)ред рдореИрдВ рд╢рд╛рдпрдж рдЙрдкрд░реЛрдХреНрдд рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред

https://github.com/OasisDigital/many-to-many-angular

рдЖрд╕рд╛рди рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкрде рднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

{
    "compilerOptions": {
        "baseUrl": ".", // This must be specified if "paths" is.
        "paths": {
            "@angular/*": ["../node_modules/@angular/*"],
            "rxjs/*": ["../node_modules/rxjs/*"]
        }
    }
}

рдореЛрдиреЛ-рд░реЗрдкреЛ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╡рд┐рдкрд░реАрдд рдХрдИ рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдПрдирдкреАрдПрдо рд▓рд┐рдВрдХ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдЯреАрдПрд╕ рдХреЛ рдпрд╣ рджреЗрдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рджреЛ рдкреИрдХреЗрдЬ рд╕рдорд╛рди рд╣реИрдВ рдФрд░ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ

@charpeni рдореБрдЭреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛

рдореИрдВ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдпрд╣ рдЕрдЪрд╛рдирдХ рд╕реЛрдорд╡рд╛рд░ рдХреЛ рд╣реЛрдиреЗ рд▓рдЧрд╛, рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдмрд╛рдзрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдпрд╣ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИред рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ mklink /j рдЪрд▓рдиреЗ рдХреЗ рдмрд╛рдж рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ npm рд▓рд┐рдВрдХ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдпрд╛ рдлрд┐рдХреНрд╕ рд╣реИ рддреЛ рдпрд╣ рдмрд╣реБрдд рдорджрдж рдХрд░реЗрдЧрд╛ред

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

Btw, рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ @types рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ

рд╣рдордиреЗ рдЧреНрд▓реЛрдм рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ред

@felixfbecker рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП, рдпрд╣ рдпрд╣рд╛рдБ рдЙрдкрд▓рдмреНрдз рд╣реИ: https://github.com/sherweb/ng2-materialize/blob/master/demo-app/tsconfig.json#L19 -L22

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рди рдореБрджреНрджрд╛ рд╣реИ рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ @ рдкреНрд░рдХрд╛рд░ / рдиреЛрдб рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред

libA @ рдиреЛрдб / рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ
libB libA рдФрд░ @ рдиреЛрдб / рдкреНрд░рдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ
libC liba, libB рдФрд░ @ рдиреЛрдб / рдкреНрд░рдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ

liba рдареАрдХ рдмрдирд╛рддрд╛ рд╣реИред
libB npm libA рд╕реЗ рдЬреБрдбрд╝реА рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИред
libA рдФрд░ libB рд╕реЗ рдЬреБрдбрд╝рд╛ libC npm рдЬреИрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдкрдХрд╛рд╕реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ

libC/node_modules/@types/node/index.d.ts(102,6): Duplicate identifier 'BufferEncoding'.
libC/node_modules/libB/node_modules/@types/node/index.d.ts(102,6): Duplicate identifier 'BufferEncoding'.
libC/node_modules/libB/node_modules/libA/node_modules/@types/node/index.d.ts(102,6): Duplicate identifier 'BufferEncoding'.

рдореИрдВрдиреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рднрд╛рдЧреНрдп рдХреЗ "рдкреНрд░рдХрд╛рд░" рдФрд░ "рдЯрд╛рдЗрдкрд░реВрдЯреНрд╕" рдХреЗ рд╕рд╛рде рдЦрд┐рд▓рд╡рд╛рдбрд╝ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред

@charpeni рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рднреА @ рдкреНрд░рдХрд╛рд░ / рдиреЛрдб рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдХреНрдпрд╛ рдЖрдкрдХреЛ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдпрд╛ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ?

@nicksnyder рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ, рдФрд░ @types/node рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдШреЛрд╖рдгрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рд╣реА рдирд╛рдо рдХреЛ рджреЛ рдмрд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдХреБрд▓ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ _ рдирд╣реАрдВ_ рдкрд░реНрдпрд╛рд╡рд░рдгреАрдп рдЯрд╛рдЗрдкрд┐рдВрдЧ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЗрдиреНрд╣реЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
https://github.com/Microsoft/types-publisher/issues/107

@nicksnyder рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдереА рдФрд░ рд╕рднреА рддреАрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдПрдХ рдПрдХрд▓ рдкреНрд░рдХрд╛рд░ / рдиреЛрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

@felixfbecker рдореИрдВрдиреЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдБ рдиреЛрдб рдХреЗ рдПрдХ рд╣реА рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИрдВред

FWIW libA https://github.com/Microsoft/vscode-languageserver-node/tree/master/jsonrpc рд╣реИ , libB https://github.com/Microsoft/vscode-languageserver-node/tree/master/client рдФрд░ libC рд╣реИ рдореЗрд░рд╛ рдЕрдкрдирд╛ VS рдХреЛрдб рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИ

@uncleramsay рдЖрдкрдиреЗ npm link @types/node рдХрд┐рддрдирд╛ рдареАрдХ рдХрд┐рдпрд╛?

???
cd libA; npm link @types/node
cd libB; npm link @types/node
cd libC; npm link @types/node

рдореИрдВ рд▓рд┐рдВрдХрд┐рдВрдЧ рд╕рдорд╛рдзрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рд╣реИрдХ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ @ lib / libB рдореЗрдВ @ рдкреНрд░рдХрд╛рд░ / рдиреЛрдб рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╣рдЯрд╛рдХрд░, рдФрд░ рдПрдХ refs.d.ts рдЬреЛрдбрд╝рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ libC рдХреА рдиреЛрдб рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд╛рдиреАрдп рд╕рдВрджрд░реНрдн рд╣реИред

/// <reference path='../../../path/to/libC/node_modules/@types/node/index.d.ts'/>

рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдореИрдВ рдЙрди рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рдЬреЛ рдореИрдВ https://github.com/Microsoft/TypeScript/issues/9091#issuecomment -225303098 рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рд╡рд░реНрдгрди рдХрд░ рд░рд╣рд╛ рдерд╛

рд╣рдордиреЗ рдХреЗрд╡рд▓ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд╕рд┐рдорд▓рд┐рдВрдХ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ ...

рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЬрдЧрд╣реЛрдВ рдкрд░ рдЬрдм рд╣рдо рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрджрд░реНрдн рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рдереЗ:

/// <reference path="../node_modules/@types/library" />
/// <reference types="library" />

рдпреЗ рджреЛрдиреЛрдВ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЕрд╕рдВрдЧрдд рд╣реИрдВ рдЬрд╣рд╛рдВ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЛ рд╕рдордорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди ( types= ) рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХрдкрде рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди path= рдирд╣реАрдВ рд╣реИред tsc --listFiles , рд╕рд┐рдорд▓рд┐рдВрдХ рдФрд░ рд░рд┐рдпрд▓рдкреИрде рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рди рдХрд░рддреЗ рд╕рдордп рд╕рдВрджрд░реНрднрд┐рдд рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдпрд╣ рдкрд░рд┐рдгрд╛рдо рд╣реИред

рд╣рдо рдЬрд┐рд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЧрдП рдереЗ рд╡рд╣ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛, рд▓реЗрдХрд┐рди рджреЛрдиреЛрдВ рдХрднреА рдирд╣реАрдВред рдпрд╣ рднреА tsconfig рдореЗрдВ typeRoots: [] рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕рдВрдХрд▓рдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ reference path= рд╢реИрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ node_modules/@types рд╕реЗ рдкреНрд░рдХрд╛рд░ рд▓реЛрдб рдХрд░ рд╕рдХреЗред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ (рдХрдо рд╕реЗ рдХрдо рд╣рдорд╛рд░реЗ рд▓рд┐рдП) types= рд╢реИрд▓реА рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдирд╛ рд╣реИред

рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рд╣рд╛рд▓рд╛рдВрдХрд┐ reference path= рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХрдкрде рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдореБрджреНрджреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдорд┐рд▓рд╛рди рдкрдереЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ред

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИред

@nicksnyder рдЖрдкрдХреЛ рдХреБрдЫ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

cd libA/node_modules/@types/node; npm link
cd libB; npm link @types/node
cd libC; npm link @types/node

рдЗрд╕ рддрд░рд╣, B & C рдареАрдХ рдЙрд╕реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ A рд╣реИред

@uncleramsay рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╕рднреА рдПрдХ рд╣реА рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ, рдЬреЛ рдХрд┐ рд╡реЗ рдкрд╣рд▓реЗ рдирд╣реАрдВ рдереЗ

рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рд╣рдХрд░реНрдореА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ?
http://codetunnel.io/you-can-finally-npm-link-packages-that-contain-peer-dependencies/

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

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

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

  • рдпрджрд┐ рдПрдХ рд╕рд╣рдХрд░реНрдореА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпреЗ рдХрдард┐рди рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдХрднреА рднреА рджреВрд░ рдирд╣реАрдВ рд╣реЛрдВрдЧреА

  • рдкреИрдХреЗрдЬ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рдЕрдкрдиреЗ рд╕рд╣рдХрд░реНрдореА рд╕рдВрд╕реНрдХрд░рдг рдкреИрдЯрд░реНрди рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдкрдХ рд░реЗрдВрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реБрднрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рддреЗ рд╣реБрдП рдЬрд┐рдиреНрд╣реЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрднреА рднреА рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛; рдЯреВрдЯреА рд╣реБрдИ рдмрд┐рд▓реНрдб рдЕрдЪрд╛рдирдХ рдЙрдкрднреЛрдХреНрддрд╛ рдХреА рд╕рдорд╕реНрдпрд╛ рдмрди рдЬрд╛рддреА рд╣реИ

рдЦрд╝реВрдм рдХрд╣рд╛ рд╣реИред

рд╕рдорд╛рдзрд╛рди

рдпрд╣рд╛рдБ рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдХрдЖрд░реНрдб рдХреЗ рд▓рд┐рдП 3 рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:

рд╡рд┐рдХрд▓реНрдк 1: рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рдмрдирд╛рдо vscode рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

tsc рд╕рдВрдХрд▓рдХ VS2017 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреНрд╖рдорд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рд╢рд╛рдпрдж рдЗрд╕рд▓рд┐рдП рдХрд┐ VS2017 рдХреЛрдб рдХреЛ рдХреНрд░реЙрд▓ рдХрд░рддрд╛ рд╣реИ (рдЬрд┐рд╕рдореЗрдВ рд╕рдордорд┐рдд node_modules ) рдЕрдЪреНрдЫрд╛ рдкрд░рд┐рдЪрдп рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЗрд╕ рддрд░рд╣ рднреНрд░рдорд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдмрдбрд╝реА рдЬрдЯрд┐рд▓ рдорд▓реНрдЯреА-рдПрдирдкреАрдПрдо-рдореЙрдбреНрдпреВрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ рдЗрд╕рд▓рд┐рдП рд╡реАрдПрд╕ реирежрез201 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ... рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдорд╛рди рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╣реИрдВ рддреЛ рд╡рд┐рдХрд▓реНрдк реи рдФрд░ рей рдкрдврд╝реЗрдВред

рд╡рд┐рдХрд▓реНрдк 2: d.ts рдЙрддреНрд╕рд░реНрдЬрди рдХрд░реЗрдВ

рдпрджрд┐ рдЖрдк outDir рдФрд░ rootDir (рдЖрдкрдХреЗ tsconfig.json ) рддреЛ рдЖрдкрдХреЗ рд╕рд╣рд╛рдиреБрднреВрддрд┐рдкреВрд░реНрдг рдкрд░рд┐рд╡рд╛рдж-рдореЙрдбреНрдпреВрд▓ рдХреЛ d.ts рдШреЛрд╖рдгрд╛рдУрдВ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрди рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ lib- рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП package.json types рд╕рдВрдкрддреНрддрд┐ред

рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд░рд┐рд╡рд╛рдж-рдореЙрдбреНрдпреВрд▓ рдХрд╛ tsconfig.json рдХреИрд╕рд╛ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП

{
  "compileOnSave": true,
  "compilerOptions": {
    "module": "commonjs",
    "sourceMap": true,
     "declaration": true,
    "jsx": "react",
    "newLine": "LF",
    "pretty": true,
    "stripInternal": true,
    "diagnostics": true,
    "target": "es5",
    "moduleResolution": "node",
    "forceConsistentCasingInFileNames": true,
    "outDir": "./dist",
    "rootDir": "./src",
   //workaround for npm linking projects and associated dupe identifier bugs: https://github.com/Microsoft/TypeScript/issues/9566#issuecomment-287633339
    "baseUrl": "./",
    "paths": {
      "*": [
        "node_modules/@types/*",
        "*",
        "custom-dts/*"
      ]
    }
  },
  "include": [
    "src/**/*"
  ],
  "exclude": [
    "node_modules",
    "dist"
  ]
}

рдФрд░ рдЖрдкрдХреЗ рд▓рд┐рдмрд░-рдореЙрдбреНрдпреВрд▓ рдХреЗ package.json рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

  "main": "./dist/_index.js",
  "types": "./dist/_index.d.ts",

рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рдпрд╛ "рдЧреЛ-рдЯреВ-рдбреЗрдлрд┐рдирд┐рд╢рди" рдпрд╛ "рд╕рднреА рд╕рдВрджрд░реНрдн рджрд┐рдЦрд╛рдПрдВ" рдпрд╣ рдЖрдкрдХреЛ d.ts рджрд┐рдЦрд╛рдПрдЧрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдирд╣реАрдВ, рдЬреЛ рдкрд░рд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдореБрдЦреНрдп рд▓рд╛рдн (рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдиреЗрд╡рд┐рдЧреЗрд╢рди)

рдпрджрд┐ рдЖрдк рдЬрдВрдЧрд▓реА рдореЗрдВ рдЗрд╕рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ npm рдореЙрдбреНрдпреВрд▓ xlib v8.5x рджреЗрдЦреЗрдВред

рд╡рд┐рдХрд▓реНрдк 3: рд╕реНрд░реЛрдд рдХреЗ рд╕рд╛рде .js рдЗрдирд▓рд╛рдЗрди (рдореЗрд░реА рдкрд╕рдВрджреАрджрд╛ рдкрд╕рдВрдж) рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░реЗрдВ

рдЖрдк рдЕрдкрдиреЗ .ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реАрдзреЗ рд╕рд┐рдорд┐рд▓рд┐рдВрдХ рд▓рд┐рдм-рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ! рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рддрднреА рдЬрдм рдЖрдк outDir`` and rootDir in your tsconfig.json``` рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред рдпрд╣ VS2017 рд░реЗрдлрд╝рд░рд┐рдВрдЧ рдХреЛ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рджреЗрдЧрд╛ред рдпрд╣рд╛рдБ рд╡рд┐рдиреНрдпрд╛рд╕ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

{
  "compileOnSave": true,
  "compilerOptions": {
    "module": "commonjs",
    "sourceMap": true,
     //"declaration": true,
    "jsx": "react",
    "newLine": "LF",
    "pretty": true,
    "stripInternal": true,
    "diagnostics": true,
    "target": "es5",
    "moduleResolution": "node",
    "forceConsistentCasingInFileNames": true,
    //"outDir": "./dist",
    //"rootDir": "./src",
   //workaround for npm linking projects and associated dupe identifier bugs: https://github.com/Microsoft/TypeScript/issues/9566#issuecomment-287633339
    "baseUrl": "./",
    "paths": {
      "*": [
        "node_modules/@types/*",
        "*",
        "custom-dts/*"
      ]
    }
  },
  "include": [
    "src/**/*"
  ],
  "exclude": [
    "node_modules",
    "dist"
  ]
}

рдФрд░ рдЖрдкрдХреЗ рд▓рд┐рдмрд░-рдореЙрдбреНрдпреВрд▓ рдХреЗ package.json рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

  "main": "./src/_index.js",
  "types": "./src/_index.ts",

рдХреИрд╡рд┐рдПрдЯ (рд╡рд┐рдХрд▓реНрдк 3 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛)

рдЙрдкрд░реЛрдХреНрдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдкреНрд░рддреНрдпреЗрдХ рд▓рд┐рдмрд┐рдб-рдореЙрдбреНрдпреВрд▓ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореИрдВ рдЕрдкрдиреЗ xlib рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рдерд╛ @types/async рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБред рд▓реЗрдХрд┐рди рддрдм рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдерд╛ рдЬреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ @types/async рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рдерд╛ред рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ .ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг tsc рдХрд╛ рдЙрдкрдпреЛрдЧ async рджреЛ рд▓рд┐рдмрд░-рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕реЗ duplicate identifier рдореБрджреНрджреЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд░реВрдкреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рд░рдл рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдпрд╛ рддреЛ рдПрдХ рд╣реА @types рдХрдИ рд▓рд┐рдм-рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╛ рд╡рд┐рдХрд▓реНрдк 2 .d.ts рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рд╕рд╛рд░рд╛рдВрд╢

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдП рдЧрдП рдШрдВрдЯреЛрдВ рдХреЛ рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИ .... рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рдпрд╣ рдмреЗрд╣рдж рджрд░реНрджрдирд╛рдХ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреАрдо рд╕рд╣рд╛рдиреБрднреВрддрд┐ рд╡рд╛рд▓реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддреА рд╣реИред рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдЕрдм рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (2.x рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдЕрд╕рдВрднрд╡ рдерд╛)

рд╡рд░реНрдХрдСрди @mhegazy рджреНрд╡рд╛рд░рд╛ https://github.com/Microsoft/TypeScript/issues/11916#issuecomment -257130001 (рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб 2 рд╡реИрд░рд┐рдПрд╕реЗрдВрдЬрд╝рд░рд┐рдВрдЧреЗрди рдХрд╛ рдПрдХ рд░реВрдкрд╛рдВрддрд░) рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрдм рдПрдХ рд▓рд╛рд░реНрдирд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛!

рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛ ... рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдПрдХ рд▓рд┐рдм рдмрдирд╛рдиреЗ / рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдЕрдиреНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рд▓рд┐рдм рдХреЛ рд╢реЗрдпрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

рд╡рд┐рдВрдбреЛрдЬ 10 рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ
рд╡реАрдПрд╕ 2015 рдЕрдкрдбреЗрдЯ 3
VS2015 2.2.2 рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг
рд╡реАрдПрд╕ рдХреЛрдб 1.12.2
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 2.2.2
рдПрдирдкреАрдПрдо: 3.10.9
рдиреЛрдб: 6.9.2

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡реА.рдПрд╕. 2015 ASP.MVC рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ рдЬреЛ рдПрдХ рдХреЛрдгреАрдп 4.1.x рд╕рд╛рдордиреЗ рдХреЗ рдЫреЛрд░ рдХреЗ рд╕рд╛рде рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдХреБрдЫ рдШрдЯрдХреЛрдВ рдХреЛ рдПрдХ рдЖрдо рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдХрд╛рд▓рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ VS рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЙрдЪрд┐рдд d.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде dist рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ es2015, es5 рдФрд░ umd рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд░реЛрд▓рдЕрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

-- dist
    |
    -- mylib
        |-- <strong i="16">@myscope</strong>
            |-- mylib.es5.js
            |-- mylib.js
        |-- bundles
            |-- mylib.umd.js
        |-- src
            |-- [all the d.ts folders/files]
        |-- index.d.ts
        |-- package.json
        |-- public_api.d.ts

рдореИрдВрдиреЗ npm рдХреЛ рдЕрдкрдиреЗ VS 2015 / рдХреЛрдгреАрдп 4.1.x рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдбрд┐рд╕реНрдЯрд░реНрдм / рдорд╛рдИрд▓рд┐рдм рдлреЛрд▓реНрдбрд░ рдХреЛ рдлреЛрд▓реНрдбрд░ рд╕реЗ рдЬреЛрдбрд╝рд╛ рд╣реИред

рдЬрдм рдореИрдВ рд╡реАрдПрд╕ 2015 рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддреЗ рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ рдЙрдкрд░реНрдпреБрдХреНрдд рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╕рджрд╕реНрдпрддрд╛, рдЕрд╡рд▓реЛрдХрди, рдЖрджрд┐ред

Ex: Build: Argument of type 'Subscription' is not assignable to parameter of type 'Subscription'.

рдЕрдЧрд░ рдореИрдВ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдирдИ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓ рд░рд╣реА рд╣реИрдВ рдЬреЛ рдореЙрдбреНрдпреВрд▓ рдЦреЛрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВ:

ex: Build: Cannot find module 'rxjs/Observable'.

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

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдКрдкрд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреМрди рд╕рд╛ рд╕рдорд╛рдзрд╛рди рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛, рдХреНрдпрд╛ рдХреЛрдИ рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

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

@mikehutter рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛ рдЖрдкрдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╣реА рдирд╣реАрдВ), рдЕрдкрдиреЗ tsconfractor рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рдХрд░реЗрдВ:

    "paths": {
      "rxjs/*": ["../node_modules/rxjs/*"]
    },

рдЖрдкрдХреЗ tsconfig рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдорд╛рдореВрд▓реА рд╕рдорд╛рдпреЛрдЬрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

(рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рджреВрд╕рд░реЛрдВ рдХреА рддрд░рд╣, рдореИрдВ рдХреБрдЫ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реБрдзрд╛рд░ рджреЗрдЦрдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдЗрд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдмрдирд╛рддрд╛ рд╣реИред)

@mikehutter рд╣рдордиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП https://github.com/angular/angular-cli/blob/master/docs/documentation/stories/linked-library.md рджреЗрдЦреЗрдВред

@kylecordes рдмрд┐рдВрджреБ

рдзрдиреНрдпрд╡рд╛рдж @kylecordes рдФрд░ @filipesilva! рдореБрдЭреЗ рдмрд╕ рдЗрддрдирд╛ рд╣реА рдЪрд╛рд╣рд┐рдП рдерд╛ ...

рдирдорд╕реНрддреЗ!

@mhegazy , рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕реЗ 2.4 рдпрд╛ рджреЗрдЧрд╛ , рдХреНрдпрд╛ рдпрд╣ рдлрд┐рд░ рд╕реЗ рджреЗрд░реА рд╣реЛрдЧреА?
рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд░реНрджрдирд╛рдХ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╣рдореЗрд╢рд╛ рдЙрди рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдкрде рдореИрдкрд┐рдВрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рдмрд╛рд░ рдпрд╣ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдмрджрд▓ рдЬрд╛рдП!

рд╢реНрд░реЗрд╖реНрда,

рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рддрдХ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕реБрдкрд░ рд╢реЙрд░реНрдЯрд╣реИрдВрдб рддрд░реАрдХрд╛ рд╣реИ:

{
    "compilerOptions": {
        "baseUrl": ".",
        "paths": {
            "*": ["node_modules/*", "*"]
        }
    }
}

рдореВрд▓ рд░реВрдк рд╕реЗ рдКрдкрд░ paths рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ: рдХрд┐рд╕реА рднреА рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рдЗрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЬрдбрд╝ рдореЗрдВ node_modules рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рджреЗрдЦреЗрдВ, рдлрд┐рд░ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдо рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдБ (рдЬрд╣рд╛рдБ рд╕реЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХрд░реЗрдВ) рдЖрдпрд╛рдд рд╣реБрдЖ рд╣реИ)ред

(рдХреГрдкрдпрд╛ рдореБрдЭреЗ рд╕рд╣реА рдХрд░реЗрдВ рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ, рдореИрдВ рдЕрднреА рднреА рдЯреАрдПрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд┐рд╢реНрддреЗрджрд╛рд░ рдирд╡рд╛рдЧрдВрддреБрдХ рд╣реВрдВ)ред

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

{
    "compilerOptions": {
        "baseUrl": "./src",
        "paths": {
            "*": ["../node_modules/*", "*"]
        }
    }
}

@ рдлрд╝рд┐рдЬрд╝реВрд▓ рдлрд╝рд┐рдЬреА рдореЗрд░реЗ рдХрд╛рдо рдХреЗ рд╡рд┐рдХрд▓реНрдк 2 рдФрд░ 3 рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ (рдореЗрд░реА рдЙрдкрд░реЛрдХреНрдд рдкреЛрд╕реНрдЯ рдореЗрдВ)ред рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдорд╛рди рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ, рддреЛ рдмрд╕ paths рд╕рдВрдкрддреНрддрд┐ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред

@ajonswearingen рдЖрдкрдХреА рдкреЛрд╕реНрдЯ рдореЗрд░реА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХ рд╣реИ ... рдЗрд╕реЗ рдХреНрд▓реАрдпрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЕрдЧрд░ рдореИрдВ рдХрд┐рд╕реА рдФрд░ рдореБрджреНрджреЗ рдкрд░ рднрд╛рдЧрддрд╛ рд╣реВрдБ рддреЛ рдореИрдВ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реВрдБрдЧрд╛ред ЁЯШД

рд╣рдо рдЗрд╕реЗ Google рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рднреА рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рд╣реИ:
https://github.com/Microsoft/TypeScript/issues/9091#issuecomment -306969543

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

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

@ рдореИрдВ рдпрд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдпрд╣рд╛рдВ рдЕрдкрдирд╛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдкреЛрд╕реНрдЯ рдкрдврд╝реЗрдВ: https://github.com/Microsoft/TypeScript/issues/6496#issuecomment -302886203

рдЙрд╕ рд▓рд┐рдВрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдореЗрд░реЗ рджреЛрдиреЛрдВ рд╕рдорд╛рдзрд╛рдиреЛрдВ (2 рдФрд░ 3) рдХреЛ рдмреЗрд╕рдпреВрдЖрд░рдПрд▓ рдФрд░ рд░рд╛рд╕реНрддреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдпрд╣ рд╕рдм рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдкреБрдирдГ рдкрдврд╝реЗрдВред "рдЖрд╕рд╛рди" рддрд░реАрдХрд╛ рд╕рдорд╛рдзрд╛рди 2 рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕рдорд╛рдзрд╛рди 3 рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдЪрд┐рдд "рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдиреЗрд╡рд┐рдЧреЗрдЯ" рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рдорд╛рдзрд╛рди 3 рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдмрд╛рд╣рд░реА .d.ts рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рд╣реА рдХрд░рдиреА рд╣реИрдВ рдЬреЛ рдПрдХ рдмрд╛рд░ рдирд┐рд░реНрднрд░рддрд╛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рднрд░реА рд╣реБрдИ рд╣реИрдВред

рдЙрдореНрдореАрдж рд╣реИ рдХреА рд╡реЛ рдорджрдж рдХрд░рджреЗред

+1 рдореИрдВ рд▓рд╛рд░рдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдЯрдВрдХрдгреЛрдВ рдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдкрд░ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЛ "рдбреБрдкреНрд▓рд┐рдХреЗрдЯ" рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рд╡реЗрдмрдкреИрдХ рдХреЗ рд╕рд╛рде рдЬреИрд╕рд╛ рдХрд┐ рдХреЛрдгреАрдп-рд╕реАрдПрд▓рдЖрдИ рдореЗрдВ, рд╣реИ рдХрд┐ рдХреЛрдгреАрдп-рд╕реАрдПрд▓рдЖрдИ рдкреИрдХреЗрдЬ.рдЬреЙрди RXJS рдкреИрдХреЗрдЬ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реИ, рдлрд┐рд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдкреИрдХреЗрдЬ рд╕реЗ `RXJS 'рдкреИрдХреЗрдЬ рдХреЛ рд╣рдЯрд╛ рджреЗрдВредрдЬрд┐рд╕рд╕реЗ рдЖрдкрдХреЛ WebPack рдХреЗ рдХрд╛рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ ред

рдпрд╣ рд╕реНрдерд┐рддрд┐ рд╕рд┐рд░реНрдлрд╝ рд╕рд╣рд╛рдиреБрднреВрддрд┐ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдмрд▓реНрдХрд┐ npm-shrinkwrap.json рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ @types/node dependencies ред Shrinkwrap npm @types/node рдХреЛ рдореВрд▓ рдкреИрдХреЗрдЬ рдореЗрдВ https://github.com/KingHenne/custom-tslint-formatters/issues/5 рджреЗрдЦреЗрдВ

рдЬрдм @types/react рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рднреА рдПрдХ app рд╣реИ рдХрд┐ @types/react рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛

рдореИрдВ w / yarn link -ed рдкреИрдХреЗрдЬ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд░рд╣рд╛ рдерд╛ред
Rx.js рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рд░рд╣рд╛ рдерд╛: Type 'Observable<Location[]>' is not assignable to type 'Observable<Location[]>'. Property 'source' is protected but type 'Observable<T>' is not a class derived from 'Observable<T>'

рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВрдиреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдФрд░ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рд╕рдорд╛рди Rxj.s рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИред
рддреЛ, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, Rx.js рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдиреЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛ред

рдпрд╣ рдореЛрдиреЛрд░реИрдк рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдЕрд╡рд░реЛрдзрдХ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЕрдм рджреЗрд░реА рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдФрд░ 2.5 рдореЗрдВ рдЕрдкрдирд╛ рд░рд╛рд╕реНрддрд╛ рдвреВрдВрдв рд▓реЗрдЧрд╛ред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: ЁЯШо

image

рджрд┐рд▓рдЪрд╕реНрдкред рдореЛрдиреЛрд░рдкреЛ рдПрдХ рдРрд╕рд╛ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИ рдЬрд╣рд╛рдВ рдореЗрд░реА рдЯреАрдо рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд╣рд╛рдиреБрднреВрддрд┐ рд╕рдм рдХреБрдЫ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреИрдХреЗрдЬ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддреА рд╣реИред

рдореЗрд░реА рдЯреАрдо рдиреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рдЖрдВрддрд░рд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдмрд╣реБрдд рдмрд╛рд░ рдорд╛рд░рд╛ рд╣реИред

рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╣рдореЗрдВ yalc рдирд╛рдо рдХрд╛ рдПрдХ рдЯреВрд▓ рдорд┐рд▓рд╛ рд╣реИ, рдЬреЛ рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рджреЗрд╡ рдкрд╛рд╢ рдмрдирд╛рддрд╛ рд╣реИред (рдПрдХ рдЯреАрдПрд▓ рдХреЗ рд░реВрдк рдореЗрдВ, рдкреВрд░реЗ рдкреИрдХреЗрдЬ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕реЗ рдкреНрд░реА-рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рддрд╛ рд╣реИ рдФрд░ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИ)ред

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд▓рдЧрд╛рддрд╛рд░ рдкреАрдЫреЗ рдзрдХреЗрд▓рддреА рдирдЬрд░ рдЖ рд░рд╣реА рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рд╡рд┐рдШрдЯрдирдХрд╛рд░реА рд╣реИ, рдХреНрдпрд╛ рд╣рдо рд╕рдВрднрд╡рддрдГ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрдЯреЙрдкрдЧреИрдк рдлрд┐рдХреНрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ # 9448 рдореЗрдВ рд╕реБрдЭрд╛рдП рдЧрдП 'рдЕрдХреНрд╖рдо рдЯрд┐рдкреНрдкрдгреА' рдХреЗ рд░реВрдк рдореЗрдВ?

import { baz$ } from './qux';
function foo (bar$: Observable<any>) {}

foo(baz$);
> Duplicate identifier

// Makes foo's `bar$` type equal to that of `baz$`
foo(/*typescript:identicalIdentifier*/ baz$);

"рдирд┐рд╖реНрдХреНрд░рд┐рдп рдЯрд┐рдкреНрдкрдгреА" рдХреЗрд╡рд▓ рд╣рд░ рдЬрдЧрд╣ рдЯрд╛рдЗрдк рдХрд╛рд╕реНрдЯ рдХрд░рдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдПрдХ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрд╣реБрдд рджрд░реНрджрдирд╛рдХ рд╣реИред рдКрдкрд░ рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрдХрд▓рдХ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджрд┐рдпрд╛:

рдпрджрд┐ рдпреЗ рд╕рднреА рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╕рддреНрдп рд╣реИрдВ, рддреЛ рдирд┐рдЬреА рд╕рджрд╕реНрдпреЛрдВ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП TS2345 рдХреА рд░рд┐рдкреЛрд░реНрдЯ рди рдХрд░реЗрдВ:

  1. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рд╛рдорд╛рдиреНрдп рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрддрдЦ-рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрдЧрдд рд╣реИрдВ
  2. рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рдорд╛рди рдирд╛рдо рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрдХреНрд╖рд╛рдПрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ (рдкреИрдХреЗрдЬ рдХреЗ рдЕрдиреБрд╕рд╛рд░)
  3. рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдЙрдирдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рд╣реЛрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП "./lib/blah/Bdts")

рдпрджрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рдорд╛рдирджрдВрдб рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рддреЛ TS2345 рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдареАрдХ рд╣реИред

рдПрдХ рд╕рд░рд▓реАрдХреГрдд рд╕реБрдзрд╛рд░ рднреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ # 1 рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рд╢рд╛рдпрдж рддрднреА рдЬрдм рд▓реЛрдЧ tsconnig рд╕реЗ рдСрдкреНрдЯ-рдЗрди рдХрд░реЗрдВред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╕реНрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

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

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

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдореИрдВ рдмрдЬрд╛рдп npm рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рдХреА рдЙрдореНрдореАрдж рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд╢рд╛рдпрдж рд╣реБрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ (), рдкрд╣рд▓реЗред

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

рдпрд╣ рдХреЗрд╡рд▓ npm link рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╕рдорд╛рди @types/xxx рдкреИрдХреЗрдЬ рдХреЗ рдХрдИ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЕрдХреНрд╕рд░ рдЙрди рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ рдЦреАрдВрдЪ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдорд╛рдирдХ рдШреЛрд╖рдгрд╛рдУрдВ рдкрд░, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдФрд░ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдиреЗ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреИрдХреЗрдЬреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдиреЛрдб рд╕рдореБрджрд╛рдп рдореЗрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдзрд┐рдХ рдЧреЛрдж рд▓реЗрдиреЗ рдХреЗ рд╕рд╛рде рдмрдврд╝реЗрдЧреАред

@Yogu рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рднреНрд░рд╛рдордХ рдкрд╣рдЪрд╛рди рдФрд░ рд╕рдорд╛рдирддрд╛ рд╣реИред рднрд▓реЗ рд╣реА рджреЛ рд╕реНрдерд╛рдиреЛрдВ рд╕реЗ рдПрдХ рд╣реА рдкреИрдХреЗрдЬ / рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЖрдпрд╛рдд рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╡реЗ рдЕрднреА рднреА рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд╕рдорд╛рди рд╣реИрдВред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд (рдорд╛рдиреНрдп) рдХреЛрдб рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддрд╛ рд╣реИ:

type a = { c: string };
type b = { c: string };

function foo (bar: a) {}

const baz: b = { c: 'd' };
foo(baz);

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

рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рд╕реЗ рдЖрдпрд╛рддрд┐рдд рдкреНрд░рдХрд╛рд░ (рдФрд░ рдЗрд╕реА @types рдкреИрдХреЗрдЬ) рджреЛрдиреЛрдВ рд╕рдорд╛рди рдФрд░ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдпрджрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрдкрдбреЗрдЯ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЯрд╛рдЗрдк рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП)ред

рдореИрдВрдиреЗ рдЕрднреА рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рдорд░реНрдЬ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдЙрдирдХреЗ рдирд╛рдо рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛, рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдЕрдЧрд▓реА рдмрд╛рд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛрдиреЗ рдкрд░ рдХреГрдкрдпрд╛ typescript@next рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдВред

рд╣реБрд░реНрд░реЗ, рдпрд╣ рддрдп рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯрди рдзрдиреНрдпрд╡рд╛рдж! :-)

@pgon pnpm рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧ рд░рд╣рд╛ рд╣реИ!

@sompylasar @types/node рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдХрд╛ рдПрдХ рд╕рд╛ рд╣реИ, рд▓реЗрдХрд┐рди @types/react , рдпрд╣рд╛рдБ рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ: peerDependencies рдореЗрдВ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреА рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд░рдЦреЛ dependencies ред рдЗрд╕рд╕реЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдФрд░ рдмрдЪреНрдЪреЗ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрд▓ рдЦрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рд╕рдВрдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред рдпрджрд┐ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдФрд░ рдмрдЪреНрдЪрд╛ рджреЛрдиреЛрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдпрд╣рд╛рдВ рдирд╣реАрдВ рдЙрдареЗрдЧреАред

@harangue рдпрджрд┐ рдПрдХ рд╡рд░реНрдЧ рдХреЛ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рджреЛ рдмрд╛рд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рд╣реА рдирд╛рдо рдФрд░ рдПрдХ рд╣реА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде, рдЕрднреА рднреА рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд░реНрдЧ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, instanceof рдСрдкрд░реЗрдЯрд░ рдЕрднреА рднреА рджреЛ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рднреЗрдж рдХрд░реЗрдВрдЧреЗред

рдЗрд╕ рдлрд┐рдбреЗрд▓ рдХреЛ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВред

рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ NPM рд╕реНрддрд░ рдкрд░ рд╣рд▓ рдХрд░реВрдБрдЧрд╛ (рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рдХрдИ рдШреЛрд╖рдгрд╛рдПрдБ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдирд╣реАрдВ рд╣реИ)ред

@Yogu : +1: рдпрджрд┐ @types/node рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рд╣реИ, рддреЛ рдЖрдк рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдиреЛрдб рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдЧрд╛, рдФрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реЛрдЧреАред рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдкреИрдХреЗрдЬ, рд╢рд╛рдпрдж рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЗрд╕реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖-рд╕реНрддрд░ @types/node ?

@ -y-ms рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЕрдЧрд▓реЗ рдЯрд╛рдЗрдк рд╣реЛрдиреЗ рдкрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ @ рдЕрдЧрд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЗрдЦреЗрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрднреА рддрдХ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреБрдЫ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдЖрдЬрд╝рдорд╛рдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЕрдм рддрдХ рдХреЛрдИ рдХрд┐рд╕реНрдордд рдирд╣реАрдВред рдЬреИрд╕реЗ рд╣реА next рдЙрдкрд▓рдмреНрдз рд╣реЛ, рдЗрд╕ рдереНрд░реЗрдб рдореЗрдВ рдПрдХ рдЕрджреНрдпрддрди рджреЗрдЦрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред @ Andy-рдПрдордПрд╕

рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдХрд┐ рджреИрдирд┐рдХ рдирд┐рд░реНрдорд╛рдг рдлрд┐рд░ рд╕реЗ рдмрдВрдж рд╣реЛ рдЧрдП рд╣реИрдВред рдЕрдВрддрд┐рдо рдерд╛: 2.5.0-dev.20170808 ред

cc / @DanielRosenwasser

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм 2.5.1 рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдкрд╣рд▓реВ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИ, рддрдм рднреА рдЬрдм рдЗрд╕рдХрд╛ рдХрд╣реАрдВ рдФрд░ рдбреАред

рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ @types рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП @types/mongodb рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╕реНрдЯрдо рдШреЛрд╖рдгрд╛ рд╣реИ, рдЬреЛ рдЙрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдмрдврд╝рд╛рддреА рд╣реИ, рдЕрд░реНрдерд╛рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕рдВрд╢реЛрдзрди рдЬреЛрдбрд╝ рд░рд╣реА рд╣реИ, рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдм @types/mongodb рдЬреЛ рдХрд┐ рдореЙрдбреНрдпреВрд▓ mongodb рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ d.ts рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЬрд┐рд╕реЗ mongo-promisification.d.ts рдХреБрдЫ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ mongodb рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рддреЛ рдлрд┐рд░ рдЙрд╕ рдЙрдкрд░реЛрдХреНрдд рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ import {somethingFromTypes} from "mongodb" рдпрд╣ рд╢рд┐рдХрд╛рдпрдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рдХрд╛рд░ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдбреЗрдЯрд╛ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЗрд╕рдХреЗ рд╡рд╣рд╛рдБ рдФрд░ рд╡реИрдз рд╣реЛ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВрдиреЗ import {somethingFromMyExtendingDts} from "mongodb" рдЬреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдареАрдХред

рдЬрдм рдореИрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдЙрд╕ рд╕рд╛рдорд╛рди рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬрдм рд╡рд╣ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд╛рдВрдЫрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдФрд░ рдореБрдЭреЗ рдмрд╕ рдЕрдкрдиреЗ рдХрд╕реНрдЯрдо d.ts рдкрд░ рдлрд┐рд░ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╛ рдЗрд╕реЗ рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░ рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди d.ts рдореЗрдВ рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ?

рдореИрдВ рдирд╡реАрдирддрдо рдкрд░реАрдХреНрд╖рдг рдмрд┐рд▓реНрдб (рд╡рд┐рдВрдбреЛрдЬрд╝ 10 64 рдмрд┐рдЯ) рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред

рдкреНрд░рдЬрдирди

рд╕рдВрд░рдЪрдирд╛

a/
  index.ts
  package.json
b/
  index.ts
  package.json

Daud

cd a
npm link
cd ../b
npm link a

рдПрдХ / index.ts

import { Observable } from 'rxjs/Observable';

export class Foo {
  public bar: Observable<any>;
}

рдмреА / index.ts

import { Foo } from '@rxjs-test/a';
import { Observable } from 'rxjs/Observable';

const baz = new Foo();

function qux (quux: Observable<any>) {}

// TypeError
qux(baz.bar);

Daud

b>tsc -v
Version 2.6.0-dev.20170826

b>tsc index.ts
index.ts(11,5): error TS2345: Argument of type 'Observable<any>' is not assignable to parameter of type 'Observable<any>'.
  Property 'source' is protected but type 'Observable<T>' is not a class derived from 'Observable<T>'.

@grofit рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреА рджреЛ рдШреЛрд╖рдгрд╛рдПрдВ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдФрд░ рдПрдХ рд╡реГрджреНрдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ mongo-promisification.d.ts рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

import * as mongodb from "mongodb"; // import the real mongo

// now augment it
declare module "mongodb" {
    // new stuff...
}

import рдмрд┐рдирд╛, рдЖрдк рдПрдХ рдкрд░рд┐рд╡реЗрд╢ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╣реИрдВ рдФрд░ рдПрдХ рдирдИ рдШреЛрд╖рдгрд╛ рд▓рд┐рдЦ тАЛтАЛрд░рд╣реЗ рд╣реИрдВ, рдПрдХ рд╡реГрджреНрдзрд┐ рдирд╣реАрдВред

( рд╣реИрдВрдбрдмреБрдХ рд░реЗрдлрд░реА)

рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдм [email protected] рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред @ Andy-ms рдХреЗ рд▓рд┐рдП рдмрдбрд╝рд╛ рдзрдиреНрдпрд╡рд╛рдж - рдпрд╣ рдПрдХ рдЧреЗрдо рдЪреЗрдВрдЬрд░ рд╣реИ!

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдерд╛, рдЬрдм рдореИрдВ рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдЖрдпрд╛рдд рдХрд░ рд░рд╣рд╛ рдерд╛рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЛрдгреАрдп-рдХреНрд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рдереЗ

`` `рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рд╛рдкреНрддрд┐рдпрд╛рдВ (): рдЕрд╡рд▓реЛрдХрдиреАрдп
http.get ()ред рдирдХреНрд╢рд╛ (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛: рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛) => {
рд╡рд╛рдкрд╕реАresponse.json ();
}


and when I removed the Observable<T> from function getitems() to not return anything the error disappear.
```function getitems()
http.get().map(response : Response) =>{
return <T> response.json();
}

@ рдмрд╛рд╕реЗрд▓78 рдореБрдЭреЗ рдЖрдкрдХреА рддреНрд░реБрдЯрд┐ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк typescript@next рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдХреЛрдгреАрдп-рдХреНрд▓реА рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрдЯреМрддреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╣реАрдВ рд╣реИред

рдореИрдВ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рдЪреБрдХрд╛ рд╣реВрдБ
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореИрдВ рдкреВрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдХреБрдЫ рд╡рд┐рд╡рд░рдг рд╣реИрдВ:
npm-link-ed рдкреИрдХреЗрдЬ рдХрд╛ tsconfig:

    "compilerOptions": {
        "module": "amd",
        "target": "es3",
        "sourceMap": true,
        "noEmitHelpers": true,
        "experimentalDecorators": true,
        "baseUrl": ".", // This must be specified if "paths" is.
        "paths": {
            "lib/*": [ "src/lib/*" ],
            "modules/*": [ "src/modules/*" ],
            "vendor/*": [ "src/vendor/*" ]
        },
        "typeRoots" : ["src/typings"]
    },
    "include": [
        "src/**/*.ts",
        "src/**/.*.ts", // TS ignores file names starting with dot by default
        "tests/**/*.ts",
        "tests/**/.*.ts"
    ]

рдореБрдЦреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ tsconfig ( @croc/webclient рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рдкреИрдХреЗрдЬ рд╣реИ):

    "extends": "./node_modules/@croc/webclient/tsconfig",
    "include": [
        "src/**/*.ts",
        "src/**/.*.ts",
        "node_modules/@croc/webclient/src/**/*.ts",
        "node_modules/@croc/webclient/src/**/.*.ts"
    ],
    "compilerOptions": {
      "baseUrl": ".",
      "typeRoots" : ["node_modules/@croc/webclient/src/typings"],
      "paths": {
        // map runtime paths to compile-time paths
        "lib/*": [ "node_modules/@croc/webclient/src/lib/*" ],
        "modules/*": [ "node_modules/@croc/webclient/src/modules/*" ],
        "vendor/*": [ "node_modules/@croc/webclient/src/vendor/*" ]
      }
    }

@ рдмреБрд░рд╛рдИ-рдЪреАрдЦ рдЖрдк рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ?

@ рдЖрдореЗрдЬреА рдпрд╣рд╛рдВ
https://github.com/evil-shrike/typescript-npmlink-issue
рдкреНрд░реЛрдк рд░реВрдЯ рдореЗрдВ:

cd lib
npm link
cd ../main
npm link tstest-lib

рддрдм main :

npm run tsc

рд╣рд╛рдп @ рдмреБрд░рд╛рдИ-рдЪреАрдЦ, рдореИрдВрдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдиреАрдЪреЗ рд╕рдВрдХреБрдЪрд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ:
lib / tsconfig.json

{
    "compilerOptions": {
        "typeRoots" : ["src/typings"]
    }
}

рдореБрдЦреНрдп / tsconfig.json

{
    "extends": "./node_modules/tstest-lib/tsconfig",
    "include": [
        "node_modules/tstest-lib/src/**/*.ts"
    ]
}

рдЗрд╕рд▓рд┐рдП рд╣рдо рджреЛрдиреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ ( tsc --listFiles ):

/main/node_modules/tstest-lib/src/typings/jquery/index.d.ts
/lib/src/typings/jquery/index.d.ts

рдЪреВрдВрдХрд┐ node_modules include рдФрд░ рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рд╕реЗ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рдЗрд╕ рдкрд░ realpath рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢рд╛рдорд┐рд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
рдЕрдкрдиреЗ node_modules рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рднреА рдмрд╛рд╣рд░реА рдкреИрдХреЗрдЬ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╣реИред

@ Andy-рдПрдордПрд╕
рдпрд╣ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдкрд░рд┐рд╡рд╛рдж рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкрд░рд┐рд╡реЗрд╢реАрдп d.ts рд╣реИрдВ рдЬреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╡реИрд╢реНрд╡рд┐рдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред JQueryStatic рдХреА рддрд░рд╣:

interface JQueryStatic {
    cleanData (elems);
}

рдпрд╛ рд▓реЛрдб рдХреЗ рд▓рд┐рдП рдЙрдкрд╕рд░реНрдЧ рдХреА рдШреЛрд╖рдгрд╛ (рдЖрд╡рд╢реНрдпрдХрддрд╛):

declare module "i18n!*" {
    //const m: { [key: string]: string };
    const m;
    export = m;
}

рдлрд┐рд░ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рд▓рд┐рдмрд░ рдХреЗ рд╕реНрд░реЛрдд рдореЗрдВ рдпрд╣ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:

const oldCleanData = $.cleanData;
$.cleanData = function (elems: JQuery) {
..
    oldCleanData(elems);
};

рдЬрдм рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдореЙрдбреНрдпреВрд▓ (рдПрдлрдмреАрдЖрдИ рд╕реЗ) рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдХрд╣реАрдВ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рддреЛ рдпрд╣ рд╕рдВрдХрд▓рди рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдЖрдкрдХреЗ рдкрд░рд┐рд╡рд╛рдж рдХреЗ рд╕реНрд░реЛрдд рдореЗрдВ рдЖрдкрдХреЛ /// <reference types="" /> (рдпрд╛ /// <reference path="" /> ) рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдЖрдкрдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЖрдпрд╛рдд рд╣реЛрдиреЗ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рдЯрдВрдХрдг рдореМрдЬреВрдж рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдЗрд╕реЗ "рд╢рд╛рдорд┐рд▓" рд╣реЛрдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реЛрдЧреА; рдЬрдм рдпрд╣ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╕рдВрджрд░реНрднрд┐рдд рдкреНрд░рдХрд╛рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЬреБрдбрд╝ рдЬрд╛рдПрдВрдЧреЗред

@ -y-ms рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВрдиреЗ рдЕрдкрдирд╛ рд▓реАрд╡рд░ рдкреБрдирдГрдкреНрд░рд╛рдкреНрдд рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдФрд░ рдЕрдм рдПрдХ рдРрд╕рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ рдЬрд╣рд╛рдБ рдпрд╣ npm-link-ed рдареАрдХ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдпрдХреАрди рдирд╣реАрдВ рд╣реЛрддрд╛ рдХрд┐ рдпреЗ рдмрд╣реБрдд рдмрдбрд╝реЗ рд░рд┐рдкреНрд░реЛрдбрдХреНрд╢рди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдорд┐рд▓ рд░рд╣реА рд╣реИ CLI рдХреЗ рдПрдХ рдирдВрдЧреЗ рдХреЛрдиреЗ рд╕реЗ, рдЬреЛ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ @ рд╣реИ, Observable<T> !== Observable<T> ред

https://github.com/intellix/angular-cli-red
https://github.com/intellix/angular-cli-blue

рдмреНрд▓реВ рдЖрдпрд╛рдд рдФрд░ рд░реЗрдб рд╕реЗ рдПрдХ рдШрдЯрдХ рдФрд░ рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ

@intellix рдХреНрдпрд╛ рдЖрдкрдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ tsc рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдХрд░рддрд╛ рд╣реИ? рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ ng рдХрд╛ рдХреМрди рд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдмрддрд╛рдирд╛ рдХрдард┐рди рд╣реИред

@ -y-ms рдореБрдЭреЗ рдЕрднреА рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЖ рд░рд╣реА рд╣реИред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдореИрдВ рдХрд┐рд╕реА рднреА vscode рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмреАрдЪ npm рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╡реЗ рд╕рднреА vscode рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред
TS Version 2.7.0-dev.20171118

рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ tsconfig рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкрде рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЗ рднреАрддрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ rxjs рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг "rxjs / *" рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред
рдЕрдм рд╕рдм рдХреБрдЫ npm рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдпрд╣ рднреА рджреЗрдЦрд╛ рд╣реИ рдЬрдм рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдЕрджреНрдпрддрди рд▓рд┐рдВрдХ рд╕реЗ рдПрдХ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдЧреИрд░-рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдиреБрднреВрддрд┐ рд╕реЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдЗрд╕ SO рдкреНрд░рд╢реНрди рдХреЛ рднреА рджреЗрдЦреЗрдВ: https://stackoverflow.com/questions/38168581/observablet-is-not-a-class-derived-from-observablet

@dakaraphi @JoshuaKGoldberg рдХреНрдпрд╛ рдЖрдк рдЗрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдирдП рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рд╣рдореЗрдВ рдПрдХ рдкреИрдХреЗрдЬ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЕрдЧрд░ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА package.json "

@ -y-ms рдореЗрд░реЗ рдкрд╛рд╕ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╣реИрдВ:

  1. https://github.com/dakaraphi/vscode-extension-fold
  2. https://github.com/dakaraphi/vscode-extension-common

рдореИрдВ vscode-extension-common рд╕реЗ vscode-extension-fold vscode-extension-common рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп npm рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ

рдпрджрд┐ рдЖрдк рдЗрди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ package.json vscode-extension-fold рдореЗрдВ рдПрдХ рдкрде рдорд╛рдирдЪрд┐рддреНрд░рдг рд╕рдорд╛рдзрд╛рди рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕рдордЭреВрдВ, рддреЛ рдореБрдЭреЗ рдЙрд╕ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

@dakaraphi рдзрдиреНрдпрд╡рд╛рдж! рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ vscode.d.ts рдХрд╛рд░рдг рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ, рдкрд░рд┐рд╡реЗрд╢реА рдШреЛрд╖рдгрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦреА рдЬрд╛ рд░рд╣реА рд╣реИред рдореИрдВрдиреЗ Microsoft / vscode-extension-vscode # 90 рдмрдирд╛рдпрд╛ рд╣реИред

рдпрд╣ рддрдм рднреА рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрдм рдореИрдВ 2 рдкреИрдХреЗрдЬ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ rxjs рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд░рдЦрддрд╛ рд╣реИред рдореИрдВ [email protected] рдФрд░ [email protected] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рджреЛрдиреЛрдВ рдкреИрдХреЗрдЬ рд╕рдЯреАрдХ рдПрдХ рд╣реА рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ?

@SamVerschueren рдХреНрдпрд╛ рдЖрдк рддреНрд░реБрдЯрд┐ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? typescript@next рд╕рд╛рде рднреА рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВред

@ -y-ms рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ!

@ @ -y-ms рдпрд╣рд╛рдВ рдПрдХ рдЫреЛрдЯрд╛ рдкреНрд░рдЬрдирди рднрдВрдбрд╛рд░ рд╣реИ https://github.com/SamVerschueren/ts-link-6496ред рдореИрдВрдиреЗ рдЗрд╕реЗ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП [email protected] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред

  1. mod-a рдФрд░ mod-b рд▓рд┐рдП рджреЛрдиреЛрдВ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
  2. mod-b yarn build рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ
  3. mod-a yarn build mod-a рд╕рд╛рде

рдЪрд░рдг 3 рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛

src/index.ts(7,15): error TS2345: Argument of type 'UnaryFunction<Observable<string>, Observable<string>>' is not assignable to parameter of type 'UnaryFunction<Observable<string>, Observable<string>>'.
  Types of parameters 'source' and 'source' are incompatible.
    Type 'Observable<string>' is not assignable to type 'Observable<string>'. Two different types with this name exist, but they are unrelated.
      Property 'buffer' is missing in type 'Observable<string>'.
src/index.ts(7,47): error TS7006: Parameter 'result' implicitly has an 'any' type.

рдЕрднреА рднреА рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ@2.8.1 рдХреЗ рд╕рд╛рде рдЪрд▓ рд░рд╣рд╛ рд╣реИ @ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдЙрд╕реА рдореБрджреНрджреЗ рдкрд░ рдерд╛ред

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

  1. рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

    • рдпрд╣ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд╢рд┐рдХрд╛рдпрдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ рдЬрдм рдЧреНрд▓реЛрдмрд▓ рдХреЛ рдкреИрд░реЗрдВрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ node_modules рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕рд╛рде рд╣реА node_modules рдХреЛ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдкреИрдХреЗрдЬ рдореЗрдВ

  2. рдХрдХреНрд╖рд╛рдПрдВ рдЬреЛ рдЕрдиреНрдпрдерд╛ рд╕рдорд╛рди рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рдирд╣реАрдВ рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

    • рдпрд╣ рд╕рдВрдХрд▓рдХ рдХреЛ рд╢рд┐рдХрд╛рдпрдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ рдЬрдм рдПрдХ рдЪрд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдкреНрд░рдХрд╛рд░ рдореВрд▓ рдкреИрдХреЗрдЬ рдХреЗ node_modules рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рдкреИрдХреЗрдЬ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдореВрд▓реНрдп рд╣реИ рдЬрд┐рд╕рдХрд╛ рдкреНрд░рдХрд╛рд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ node_modules рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдореИрдВ paths рдХреЙрдиреНрдлрд┐рдЧ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд░рд╣рд╛ рд╣реВрдБред рдЙрди рдореЙрдбреНрдпреВрд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдЬрд┐рдирдХреА рдкрд░рд┐рднрд╛рд╖рд╛ @types/* , рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ , рдЖрдк рдмрд╕ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

"paths": {
  "*": ["node_modules/@types/*", "*"]
}

рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрд╣рд╛рдВ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдПрдХ рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдЪрд▓рддреЗ рд╣реИрдВ рдЬреЛ рдЯрд╛рдЗрдк рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмрдВрдбрд▓ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдХрдХреНрд╖рд╛рдУрдВ рдпрд╛ рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, rxjs :

"paths": {
  "rxjs": ["node_modules/rxjs"],
  "rxjs/*": ["node_modules/rxjs/*"]
}

рдЬрдм рдореИрдВ TS 2.8.3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдкреИрдХреЗрдЬ рдЬреЛрдбрд╝рддреЗ рд╕рдордп рд╕рд╣рд╛рдиреБрднреВрддрд┐ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░рддрд╛ рд╣реВрдВ:

},
"devDependencies": {
    "@types/MyLib": "file:../MyLib/bin/npm/@types"
},

V3 рдХреЗ рдмрд╛рдж рд╕реЗ, npm рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕рд┐рдореНрдмрд▓рд┐рдВрдХреНрд╕ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬрдм рдореИрдВ рд╕рдВрдХрд▓рди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рд╕рдВрдХрд▓рдХ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рдкрд░рд┐рднрд╛рд╖рд╛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреЛ рдЕрд▓рдЧ рдФрд░ рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реИ:

node_modules\@types\MyLib\index.d.ts(3,11): error TS2300: Duplicate identifier 'Foo'.
C:/MySolution/MyLib/bin/npm/@types/index.d.ts(3,11): error TS2300: Duplicate identifier 'Foo'.

рдЕрдЧрд░ рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореИрдВ typeRoots: ["./node_modules/**/"] рд╕реЗрдЯ рдХрд░рдХреЗ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ

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