2017-09-25 2 views
0

노드를 통해 개발 중입니다. 나는 자바 스크립트에서 다음 개체가 내 타이프 코드에서이 객체를 실체화 할자바 스크립트 객체를 사용하는 Typescript

function Person{ 
    this.name = 'Peter', 
    this.lastname = 'Cesar', 
    this.age = 23 
} 

파일이 있습니다

let peter: any = new Person(); 

하지만 "name'Person '를 찾을 수 없습니다"받고 있어요 그것은 정상입니다 전에 함수에 대한 서명을 정의해야하기 때문입니다. 이것을 어떻게 할 수 있습니까?

답변

0

그래서 먼저 내가 구문이 잘못 자바 스크립트 당신 바닐라, 다음 포함되어 당신의 여러 개체를 가질 수

function Person() { 
    this.name = 'Peter'; 
    this.lastname = 'Cesar'; 
    this.age = 23; 
} 

그런 다음 타이프 당신이

declare var Person: any; 
let peter: any = new Person; 
let john: any = new Person; 

외부 JS를 확인 할 수 있어야한다고 생각합니다 Person

+0

좋은 직업은 내가 찾고있는 것이고, 저는 궁금 해서요, 왜 Person() 함수를 선언합니다 : void; let peter : any = new Person() 이 작동하지 않습니다. – skizofre3e

0

사용이 대신 사람 기능는 :

export class Person { 
    name:string = 'Peter'; 
    lastname:string = 'Cesar'; 
    age:number = 23 
} 
+0

외부 JS로 사용하고 싶습니다. 코드를 이미 작성한 부분을 의미합니다. 내 의견으로는 함수의 서명이나 타이핑을 정의하는 것입니다. – skizofre3e

0

그래, 난 당신이 기능을 "선언"하는 것입니다 무엇을해야하는지 생각합니다.

declare function Person(): void; 

공식 문서에서 "선언"을 읽을 수 있습니다.

0

답은 @TomKunzemann과 @ GauravSrivastava의 답변입니다. declareclass이어야합니다.

declare을 사용하면 컴파일러에서 형식을 구현하지 않고 형식 및 동작에 대해 알려주므로 환경에 따라 Person JavaScript에 포함됩니다.

그리고 class으로, 여러분은 new으로 인스턴스화하는 것과 같은 것을 TypeScript에 알려줍니다.

마지막으로 peterany 유형으로 정의하고 싶지 않거나 TypeScript가 나중에 유형을 검사하지 않습니다. 그냥 : any을두면, 타이프 라이터 형 Person의 수 peter을 추론하고 그러한 (예를 들어, lastName 대신 lastname의) 오타 감지 등 원하는 형식 검사, 수행합니다

declare class Person { 
    name: string; 
    lastname: string; 
    age: number; 
} 

let peter = new Person(); // okay 
console.log(peter.name); // okay 

// note the typo below 
console.log(peter.lastName); // error! 
// "Property 'lastName' does not exist on type 'Person'. Did you mean 'lastname'"? 

희망하는 데 도움이; 행운을 빕니다!

관련 문제