write una tipos qué pasar parametros hace función funciones funcion ejemplos ejemplo desde attribute javascript casting type-conversion flowtype

javascript - una - title html



Flujo: crea un tipo de flujo extendiendo otro tipo (1)

type someType = { keyOne: string, keyTwo: string, }; type someOtherType = { keyOne: string, keyTwo: string, keyThree: string, };

Ambos tipos son objetos que contienen keyOne y keyTwo , la única diferencia es que este último amplía el primero con una clave adicional de keyThree .

En lugar de escribir código duplicado, ¿es posible construir el tipo de flujo someType extendiendo someType ? En mi opinión, me viene a la mente el descanso / dispersión de objeto ES6, pero no estoy seguro de cómo lograr algo como esto en Flow.

¡Gracias!


Lo que estás buscando es el tipo de intersección . De acuerdo con la documentación:

Un tipo de intersección requiere un valor para todos los tipos de entrada.

Sintaxis: Intersección: <tipo 1> & <tipo 2> ... & <tipo n>

El tipo de intersección está destinado a extender un tipo existente y agregarle requisitos de tipo adicionales.

type someType = { keyOne: string, keyTwo: string } type someOtherType = someType & { keyThree: string } const shouldBeOk: someOtherType = { keyOne: ''biz'', keyTwo: ''buzz'', keyThree: ''baz'', } const shouldError: someOtherType = { keyOne: 123, keyTwo: ''hello'', keyThree: ''world'', } // flow error: 16: const shouldError: someOtherType = { ^ object literal. This type is incompatible with 8: type someOtherType = someType & { ^ object type

El opuesto lógico del tipo de intersección es el tipo de unión . De acuerdo con la documentación:

Un tipo de unión requiere que un valor sea uno de los tipos de entrada.

Sintaxis: Unión: <tipo 1> | <tipo 2> ... | <tipo n>

Como ejemplo. puede usar el tipo de unión para crear un enumerable.

type fooBarBazType = ''foo'' | ''bar'' | ''baz''; const shouldBeOk: fooBarBazType = ''bar''; const shouldError: fooBarBazType = ''buzz''; 4: const shouldError: fooBarBazType = ''buzz''; ^ string. This type is incompatible with 4: const shouldError: fooBarBazType = ''buzz''; ^ string enum