Typescript: объединение в параметре функции вызывает ошибку

#javascript #typescript

#javascript #typescript

Вопрос:

Исходя из потока, раньше это было нормально, но, по-видимому, не так в TS, и я не могу найти достойный пример в Интернете:

 type Props = {
    fnA(string, string | object): void; 
                    // ^ Unexpected token, expected "," 
    fnB(string, any): void; // No problems with this 
}
  

Как правильно написать тип объединения для параметра функции?

Ответ №1:

Это особенность синтаксиса TypeScript: в типе функции вы должны дать имена всем параметрам:

 type Props = {
    fnA(a: string, b: string | object): void; 

    fnB(string, any): void; // string, any are parameter names, not types
}
  

Во второй функции fnB , string и any ошибочно интерпретируются не как типы, а как имена аргументов, которые имеют неявный any тип — если у вас была --noImplicitAny включена опция, вы бы получили сообщение об этом.