Как указать это в литерале объекта с потоком в JS - PullRequest
0 голосов
/ 22 ноября 2018

Я использую // @flow strict, но почему-то он не работает должным образом в литерале объекта при использовании this.this казалось, интерпретируется как любой.

Это пример кода

type TestType = {
  arr: Array<number>,
  fun: () => void,
}

const testObject: TestType = {
  arr:[],
  fun(){
    this.arr.toUpperCase();
  }
}

testObject.fun();

Как я могу сказать потоку, что он знает, что this.arr.toUpperCase() не существует, потому чтоthis.arr Массив?

1 Ответ

0 голосов
/ 23 ноября 2018

Кажется, нет способа явно определить this тип функции:

В Flow вы не вводите аннотирование этого, и Flow будет проверять любой контекст, который вы вызываетефункция с.

В качестве обходного пути вы можете сделать что-то вроде: :

const testObject: TestType = {
  arr:[],
  fun(){
    const {arr}: TestType = this;
    arr.toUpperCase();
  }
}

testObject.fun(); 
...