Concordo que, na maioria dos casos, if (!(x instanceof Y)) {...}
é a melhor abordagem, mas, em alguns casos, cria uma isY(x)
função para que você possaif (!isY(x)) {...}
valer a pena.
Sou iniciante em datilografia, e me deparei com essa questão de S / O várias vezes nas últimas semanas; portanto, para os googlers, a maneira datilografada de fazer isso é criar uma proteção de tipo como esta:
typeGuards.ts
export function isHTMLInputElement (value: any): value is HTMLInputElement {
return value instanceof HTMLInputElement
}
uso
if (!isHTMLInputElement(x)) throw new RangeError()
// do something with an HTMLInputElement
Eu acho que a única razão pela qual isso pode ser apropriado no texto datilografado e não no js comum é que as proteções tipográficas são uma convenção comum; portanto, se você as escreve para outras interfaces, é razoável / compreensível / natural escrevê-las também para as aulas.
Há mais detalhes sobre proteções de tipo definidas pelo usuário nos documentos
instanceof
tanto ...