functionで宣言した関数の中でthisを使うと、
'this' implicitly has type 'any' because it does not have a type annotation.
とエラーが出ます。
アローファンクションと近い、functionによる関数宣言は実行方法によってthisが変化するからです。
TypeScriptのドキュメント をみてみると、
Unfortunately, the type of this.suits[pickedSuit] is still any. That’s because this comes from the function expression inside the object literal. To fix this, you can provide an explicit this parameter. this parameters are fake parameters that come first in the parameter list of a function:
function f(this: void) { // make sure `this` is unusable in this standalone function }
https://www.typescriptlang.org/docs/handbook/functions.html#this-parameters より引用
と書いてあるので、パラメーターの第一引数でthisを指定するのがセオリーのようです。
class Klass { constructor() { func.call(this); function func(this: Klass) { // パラメータでthisの型を指定 console.log(this); } } }
こんな感じで指定するとエラーが消えます。