2016-01-12 26 views
26

おはよう。私はVSCodeを使ってType Scriptを初めて使っています。'X'タイプの引数は 'X'タイプのパラメータに割り当てられません

取得次のエラー:

  1. エラーTS2322:タイプ '()=>文字列は' 'string' を型に代入できません。

  2. エラーTS2322:タイプ '()=>数' '番号' タイプに割り当てません。

コード:私は01をインスタンス化しようとしています

DTO.ts

interface DTO { 

    getId(): number; 
    getValue(): string; 
} 
export = DTO; 

LinkedObject.ts

class LinkedObject { 

    public value: string = "Not Set"; 
    public id: number = 0; 

    constructor(value?: string, id?: number) { 
     this.value = value; 
     this.id = id; 
    } 
} 
export = LinkedObject; 

上述インターフェースメソッドの上に使用クラス:

TravelClientFormPopulator.ts

class TravelClientFormPopulator { 

    public populateComboBoxUsingDTOs(dataObjects: Array<DTO>, comboBoxID: string): void { 

     // Get the combo box 
     var selectElement = <HTMLSelectElement> document.getElementById(comboBoxID); 
     // Reset the options 
     selectElement.options.length = 0; 

     var linkedObjectsToAdd: LinkedObject[] = new Array<LinkedObject>(); 

     var defaultLinkedObject: LinkedObject = new LinkedObject("Not Selected", 0); 

     linkedObjectsToAdd.push(defaultLinkedObject); 

     for (var i = 0; i < dataObjects.length; i++) { 
      var value: string = dataObjects[i].getValue; // Error here 
      var id: number = dataObjects[i].getId; // And here 
      var linkedObject: LinkedObject = new LinkedObject(value, id); 
     } 
    } 
} 

すべてのヘルプは高く評価されるであろう。

答えて

31

あなたは欠場括弧:

var value: string = dataObjects[i].getValue(); 
var id: number = dataObjects[i].getId(); 
+8

今後、エラーの内容を理解することは役立ちます。 'Type '()=> string'は 'string'型に代入不可能です。このインスタンスでは、基本的に"文字列を返す関数はstring型の変数に代入できません "文字列 '正しくそれは意味をなさないはずです。純粋なJSの場合は、エラーが発生せず、返された値の代わりに変数が関数を指していたため、何が起こっているのかを追跡することがさらに困難になります。 – DeezCashews

3

あなたは、これらのエラー

  1. まずあなたがチェックコンパイラバージョンを見ることができる場所も他のシナリオを追加し、サポートするために、最新の活字体のコンパイラ をダウンロードES6構文

  2. typescriptですが、まだ

あなたはこれらのエラーが初期化中に構文をチェックしたり、これらのメソッドや変数を呼び出すときに表示、
チェックするかどうか、でもこれは が実際に開発をブロックしないタイプミスで出力を生成します関数のパラメータは、あなたが「文字列」と「ブール」または「番号」を割り当てる例

については

として初期化、誤ったデータ型であります1.

private errors: string; 
    //somewhere in code you assign a boolean value to (string)'errors' 
    this.errors=true 
    or 
    this.error=5 

2。配列の初期化のために角括弧が欠落しているため、

private values: Array<number>;  
    this.values.push(value); //Argument of type 'X' is not assignable to parameter of type 'X' 

ここでエラーメッセージはそれがなくても動作しますが、VSコードレッドアラート、です。

private values: Array<number> = [];  
this.values.push(value); 

注:

var a=2; 
typeof(a) // "number" 
var a='Ignatius'; 
typeof(a) // "string" 

これらのエラーは、VSのコードで

例を強調してもしてJavascriptが割り当てられた値に応じて型キャスト、だから、typescriptですが、それらを通知しますが、コードが実行されることを覚えておいてください

0

に関連

は、不思議なことに、私はそれが不満されたクラスのインポートがありませんでしたし、私のIDEはそれを検出しませんでした。私がやっている

1

角度2とtypescriptですし、私は私が.map(key = > 代わりの.map(key =>

は確かに愚かな構文エラーのために開いたあなたの目を保つた

私の矢印表記でスペースを持っていた実現しませんでした

関連する問題