Reputation: 349
I even tried wrapping into a module but still failed to capture "this" on all attempts. The Javascript generated by the below Typescript doesn't resolve the this and it fails to return the desired result. How can i fix this issue in TypeScript?
var secretNumberGame = () => {
var secretNumber: number = 21;
var counter: number = 9;
return {
responses: {
equal: "You are correct! Answer is " + secretNumber,
lower: "Too high!",
higher: "Too low!"
},
guess: (guess: number) => {
counter++;
var key = (guess == secretNumber) ? "equal" : (
(guess < secretNumber ? "higher" : "lower"));
console.log(this.responses[key]);
return counter;
}
}
}
var game = secretNumberGame();
console.log(game.guess(45));
console.log(game.guess(18))
console.log(game.guess(21));
Upvotes: 2
Views: 1672
Reputation: 275867
Please just use a function
and not ()=>
:
var secretNumberGame = () => {
var secretNumber: number = 21;
var counter: number = 9;
return {
responses: {
equal: "You are correct! Answer is " + secretNumber,
lower: "Too high!",
higher: "Too low!"
},
guess: function (guess: number) {
counter++;
var key = (guess == secretNumber) ? "equal" : (
(guess < secretNumber ? "higher" : "lower"));
console.log(this.responses[key]);
return counter;
}
}
}
var game = secretNumberGame();
console.log(game.guess(45));
console.log(game.guess(18))
console.log(game.guess(21));
Here are some docs on the fat arrow : http://basarat.gitbooks.io/typescript/content/docs/arrow-functions.html
Upvotes: 3