2017-09-25 4 views
0

私はNodeを通して開発しています。 私はJavaScriptで次のオブジェクトは、私は私の活字体のコードでこのオブジェクトをインスタンス化したいJavascriptオブジェクトを使用するためのTypescript

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

ファイルを持っている:

let peter: any = new Person(); 

しかし、私は「name'Person」を見つけることができません」そうだ、それは普通のことです前に関数のシグネチャを定義する必要があるからです。どうすればこれを達成できますか?これは代わりに人機能

答えて

0

だから、最初、私は構文が間違っているのjavascriptあなたのバニラは、

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

する必要があります次にtypescriptですであなたが

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

を行うことができると思い外部jsファイルが含まれていることを確認後、あなたは複数のオブジェクトを持つことができますPerson

+0

素敵な仕事thatsは私が探していたものです、私はちょうど不思議です、なぜ 関数Person()を宣言します。 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では、タイプを実装せずにその型と動作についてコンパイラに伝えるだけで、JavaScriptに関数Personが組み込まれていることに依存します。

classと入力すると、newでインスタンス化することがTypeScriptに伝えられます。

最後に、peteranyであると定義したくない場合や、後でタイプチェックしない場合があります。あなただけの: 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'"? 

希望に役立ちます。がんばろう!

関連する問題