2016-08-24 8 views
5

私はinterwebsに明確な答えを見つけるcouln't以来は、聞くが、私の質問に行くTSでこれを構築する方法はありTypescript/JSの構造体に似たインターフェースですか?私は、「構造体」そうのような持って</p> <p>:

struct tTest{ 
    public: 
     char foo [1+1] 
     char bar [64] 
}; 

を/ JS?私はインターフェイスを使用して考え

が正しい方法です:プロパティに

export interface tTest{ 
    foo: string; 
    bar: string 
} 

しかし、追加する方法がありません[64]と[1 + 1]、それを何ですか? もしあれば、私は同じ長さのオブジェクトのようなすべてのtTestが必要なので、それは素晴らしいだろうし、長さをチェックし、それが適切な長さを持って物事を追加する方法難しいだろう。これが本当に汚れているような気がします。

アイデア/ヘルプ? ありがとう!

+0

いいえ、js/tsには何もありません。しかし、何をしようとしていますか?文字列の長さを制限するには、文字列のサイズを固定する必要がありますか? –

+0

'[1 + 1]'が実際に何をするのかよく分かっていませんが、Typescriptでそれを行う正しい方法のように私には聞こえます。 'foo()を使って' class tTest'を定義し、 :string'メソッドで、パディング/切り捨てられた値を返します。 – deceze

+0

'char'はJSまたはTSの型ではなく、文字列のみが存在します。あなたができることは、文字列の長さを制限するか、各エントリが文字を表す整数の配列を使用することです。 –

答えて

6

コメントによると、js/tsはchar型をサポートしていないため、配列/文字列の長さを宣言する方法はありません。

interface tTest { 
    foo: string; 
} 

class tTestImplementation implements tTest { 
    private _foo: string; 

    get foo(): string { 
     return this._foo; 
    } 

    set foo(value: string) { 
     this._foo = value; 

     while (this._foo.length < 64) { 
      this._foo += " "; 
     } 
    } 
} 

code in playground

あなたはインタフェースが実装を欠いており、コンパイル処理に耐えられないため、実際のクラスを持っている必要があります:

あなたはしかしセッターを使用することを強制することができます。
正確な長さになるようにスペースを追加しましたが、ニーズに合わせて変更することができます。

+0

私はこれをする必要があることを恐れていた..しかし、あなたに感謝します。 – Faigjaz

1

JavaScriptのように、Typescriptで配列の長さを強制することはできません。
のは、我々は次のようにクラスt検定を持っているとしましょう:

class tTest{ 
     foo = new Array<string>(2); 
}; 

を見てわかるように、私たちはこの構文で、私たちは私たちの内側に置くことができる値の種類を制限することができ、長さ2の文字列の配列を定義しています配列:

let t = new tTest(); 
console.log('lenght before initialization' + t.foo.length); 

for(var i = 0; i < t.foo.length; i++){ 
    console.log(t.foo[i]); 
} 

t.foo[0] = 'p'; 
t.foo[1] = 'q'; 
//t.foo[2] = 3; // you can't do this 
t.foo[2] = '3'; // but you can do this 

console.log('length after initialization' + t.foo.length); 

for(var i = 0; i < t.foo.length; i++){ 
    console.log(t.foo[i]); 
} 

このように、配列内に数値を入れることはできませんが、内部に入れることのできる値の数を制限することはできません。

Playground

+0

値の数を制限することは私のニーズに合っていません。私はしたくないことをしなければならないように見えます。しかし、あなたもありがとう! – Faigjaz

関連する問題