Tengo dos interfaces definidas así:
export interface PostView{ postName: string; postTime: Time; message: string | null; replies: { [P in AccountType]?: Reply[][] }; } export interface Post{ postName: string; postTime: Time; message: string | null; replies: { [P in AccountType]?: Reply[] }; } Puede ver que ambas definiciones de interface son las mismas, excepto por el campo de replies .
Ahora, en un archivo .tsx , obtengo un objeto de PostView . Quiero llamar a otra función que requiere el objeto Post . Además, para el campo de replies , tengo que enviar un objeto vacío a la función.
Así tengo actualmente.
const postViewObject: any = props.myPostView; postViewObject.replies= {}; const request: Post = postViewObject; functionToBeCalled(request); Puede ver que estoy asignando el objeto PostView a una variable de tipo any que no quiero hacer. Y luego actualizo el campo de replies al objeto vacío y lo transfiero al objeto Post .
¿Hay una mejor manera de escribir este código?
Puede crear un nuevo objeto de publicación utilizando el operador de propagación:
const request: Post = { ...props.myPostView, replies: {} }