Tengo una interfaz personalizada como esta:
interface Pointer<T> { id: string }id es un puntero a otras estructuras de datos, pero el campo id no contiene información sobre a qué estructura de datos apunta.
Idealmente, podría escribir la clase Pointer en cuanto a la estructura de datos a la que apunta el puntero, para no confundir accidentalmente los punteros. Por ejemplo:
function getBarPointer(): Pointer<Bar> { return { 'id': 'abc123' } } function getBazPointer(): Pointer<Baz> { return { 'id': 'xyz789' } } function useBarPointer(p: Pointer<Bar>): void { doSomethingWithP(p) }Esto me permitiría asegurarme de que estoy pasando los punteros correctos en la etapa de verificación de tipos, al mismo tiempo que me permite crear funciones que operan en tipos específicos de punteros.
es posible? O, en general, ¿hay alguna manera de decirle a mecanografiado que diferencie los tipos que aparentemente son iguales?
En este momento, tal como está escrito, mecanografiado simplemente ignora el tipo pasado a Pointer.