2017-05-18 12 views
0

私はこのような何か...Typescriptのオブジェクトリテラルに関数を追加するにはどうすればよいですか?

let orders = {}; 
let app: {orders: object} = {orders: orders}; 

let getNumber = function(orders: object): number { 
    //some code here 
    return some value 
}; 

app.orders[1] = 'something'; 
let n = getNumber(app.orders); 

上記の作品を持っています。しかし、私はこのように私の「アプリ」オブジェクトに機能を追加することでこれを行うにしようとしていた。

let getNumber = function(): number { 
    return this.orders[1]; //or something 

}; 

let app: {orders: object, getNumber: object} = {orders: orders, getNumber: getNumber}; 

let n = app.getNumber(); 

つまり

let app = {}; 
app.orders = {}; 
app.getNumber = function() { 
    return this.orders[1]; //or something //anything the point is that i can act on app.orders 
} 


let n = app.getNumber() 

のJavaScriptのと同等になります - 活字体で私が追加することができますオブジェクトリテラルの関数ですか?

答えが「いいえ」なら、それは問題ありません。クラスとして書く方法を理解する必要があります。しかし、私は上記が可能かどうか疑問に思っていますか?

おかげ

更新:

let getValue = function(): string { 
    return this.orders[1]; //or something 
}; 
let orders: {1: string} = {1: 'abc'}; 
let app: {orders: object } = {orders: orders}; 
let val = getValue.call(app); 
console.log(val) ; //abc 
+2

同じように。あなたは実際に関数型を書く方法を尋ねていますか? – SLaks

+0

@SLaks - はい。基本的に私は何をしようとしていたのかJavaScriptでうまくいきませんので、私は混乱しました。私は、私がしようとしていたもののTypeScriptで質問を更新しましたが、実際には混乱に基づいていたので、質問はあまり準備ができていませんでした。あなたの介入に感謝します。 –

答えて

0
ここ

関数の型を定義する方法は次のとおりです。あなたが他のプロパティを追加

type App = { 
    orders: object; 
    getNumber:() => number; 
} 

let app: App = { orders: orders, getNumber: getNumber }; 
+0

ありがとうNitzan。それは私が探していたものではありませんでした(私の質問はちょっと濁っていました)が、役に立っています。私にパスカルの記録を思い出させる。 –

+0

あなたの質問からまだ分かりません –

+0

私はそれが明確ではないが、人々は私が/できないことに答えたので削除したいと思います。ごめんなさい。 –

関連する問題