#typescript #webstorm
#typescript #webstorm
Вопрос:
Я хотел бы использовать io-ts для проверки ввода. Однако по сравнению с типом интерфейса WebStorm / IDEA не показывает имя типа объекта при наведении курсора мыши на тип, но показывает детали самого типа.
Давайте предположим, что у нас есть следующий код пользователя ввода-вывода и пользователя интерфейса.
import * as t from 'io-ts';
const UserType = t.type({
name: t.string,
});
type User = t.TypeOf<typeof UserType>;
interface UserI {
name: string;
}
const myUserI: UserI = { name: 'Paul' }; //WebStorm Type const myUserI: UserI
const myUserIoTs: User = { name: 'Luna' }; //WebStorm Type const myUserIoTs: { name : string }
При наведении курсора мыши на myUserI отображается информация о типе из WebStorm const myUserI: UserI
Однако, когда я навожу курсор мыши на тип myUserIoTs, информация, отображаемая в WebStorm, отображается const myUserIoTs: {name: string;}
вместо const myUserIoTs:User
Есть ли способ, которым WebStorm может отображать имя типа User
вместо {name: string}
?
Ответ №1:
Всплывающая подсказка, которую вы видите в WebStorm при наведении ctrl
курсора мыши на символ в файле TypeScript, показывает информацию о предполагаемом типе из службы компилятора TypeScript. И действительно, существует известная разница в информации, которую сам TypeScript предоставляет для интерфейсов и перечислений по сравнению с псевдонимами типов. Вот проблема с отслеживателем TypeScript: https://github.com/microsoft/TypeScript/issues/25894
Комментарии:
1. Привет, Лена. Большое спасибо за ваш ответ. Когда я прочитал проблему, на которую вы ссылались, я вроде как чувствую, что у них противоположная проблема, что им нужна расширенная информация о типе. Вы уверены, что это связано.
2. да, я уверен. Хотя они действительно хотят видеть расширенную информацию для интерфейсов, как и для псевдонимов типов, это все та же проблема, и так работает tsserver
Ответ №2:
Для этого есть обходной путь, определяющий интерфейс.
interface User extends t.TypeOf<typeof User> {}