Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

188
Vistas
¿Cómo obtener "to_do" de un bloque de nociones usando mecanografiado?

Recientemente probé la versión final de Notion API. Usando mecanografiado, hice una solicitud de niños de bloque de recuperación:

 (async () => { const blockId = process.env.BLOCK_ID; const response = await notion.blocks.children.list({ block_id: blockId, page_size: 50, }); console.log(response.results[1].to_do); })();

Mensaje de error

Por alguna razón, mecanografiado me dice que to_do no existe en el tipo (PartialBlockObjectResponse | BlockObjectResponse) . Miré la definición de tipo y... estaba allí:

 declare type BlockObjectResponse = { // ... { type: "to_do"; to_do: { rich_text: Array<RichTextItemResponse>; color: ApiColor; checked: boolean; }; object: "block"; id: string; created_time: string; created_by: { id: IdRequest; object: "user"; }; last_edited_time: string; last_edited_by: { id: IdRequest; object: "user"; }; has_children: boolean; archived: boolean; } // ... }

Intenté hacer type guard

 function isToDo(value: PartialBlockObjectResponse | BlockObjectResponse): value is BlockObjectResponse { return "to_do" in value; } /* Error: TS2304: Cannot find name 'PartialBlockObjectResponse'. */

e importar el tipo desde el paquete

 import type {PartialBlockObjectResponse} from "@notionhq/client/build/src/api-endpoints"; // Error: Module '"@notionhq/client/build/src/api-endpoints"' declares 'PartialBlockObjectResponse' locally, but it is not exported.

Ninguno ayudó.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

(Frustrante) Ese paquete no exporta sus tipos . Hay un problema abierto al respecto en el repositorio.

Pero puede solucionar esto usando un genérico con su función de predicado:

Parque infantil TS

 import {Client} from '@notionhq/client'; declare const notion: Client; declare const blockId: string; function isTodo <T extends Record<string, unknown>>(obj: T): obj is T & { type: 'to_do' } { return 'type' in obj && obj.type === 'to_do'; } (async () => { const response = await notion.blocks.children.list({block_id: blockId, page_size: 50}); for (const result of response.results) { if (isTodo(result)) { result.to_do; /* ^^^^^ is now this type: { rich_text: RichTextItemResponse[]; color: ApiColor; checked: boolean; } */ } } })()
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda