fomenkogregory
@fomenkogregory
Юниор софтварный инженер

Omit return type in async method?

https://www.typescriptlang.org/play?#code/JYOwLgpg...

Не совсем понимаю почему return type у метода не валидирует корректно?

interface User {
  username: string
  password: string
  id: number
}

type UserWithoutPassword = Omit<User, 'password'>

class AuthService {
    async validateUser(username: User['username'], password: User['password']): Promise<UserWithoutPassword> {
        const user: User = {
          id: 1,
          username: 'kek',
          password: 'fdsfsd'
        }

        // I want to return all User interface fields exept password
        // if (user?.password === password) {
        //     const { password, ...userInfo } = user

        //     return userInfo
        // }

        return user // why there is no error, if User !== UserWithoutPassword?
    }
}
  • Вопрос задан
  • 89 просмотров
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
Попробуй так:
type UserWithoutPassword = Omit<User, 'password'> & {
    password?: never
}


По-русски: поле password опционально, и имеет тип never. Т.к. ни одно значение не может быть типа never, единственный способ удовлетворить этому типу — не иметь поля password вообще.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы