Проверка принадлежности параметра к типу в Typescript

Как я могу проверить, принадлежит ли определенный параметр к типу, который я определил в TypeScript? Например:

type myType = {n:number}
let par = {n:3}

Я хочу проверить, относится ли x к типу mtType. Если я использую typeof par, возвращаемым значением будет строка "object". Спасибо.


person J. Doe    schedule 18.04.2018    source источник
comment
Хотя на дубликате не отмечен ответ, я поддерживаю свой ответ. Суть в том, что типы стираются, проверьте, присутствуют ли свойства и имеют ли они ожидаемый тип.   -  person Titian Cernicova-Dragomir    schedule 18.04.2018


Ответы (1)


Взгляните на раздел защиты типов здесь. Это возможно со следующим синтаксисом:

function isMyType(arg: any): arg is myType {
    // you can replace the following expression with the logic 
    // that clearly defines that if an object can be myType
    return arg.n !== undefined && arg.n === parseInt(arg.n);
}

и позже в коде

if (isMyType(objectToCheck)){
   // do something with the object as myType
}
person Lajos Gallay    schedule 18.04.2018
comment
Почему не typeof(arg.n) === "number"? Я не вижу, чтобы ОП говорил, что {n:3.14} не myType. - person Motti; 18.04.2018
comment
имеет смысл, но вопрос (и ответ) связан с проверкой типа объекта, а не с типом значения поля. В любом случае, я добавлю комментарий, чтобы прояснить это. - person Lajos Gallay; 18.04.2018