La función nodeCategoryProperty espera tener la firma - (a: ObjectData, b?: string) => string , que, en mi opinión, debería ser (a: ObjectData, b?: string) => string | void , ya que esta función no debería devolver nada si se usa como setter.
Si se proporciona el segundo argumento, la función debe modificar el objeto de datos del nodo para que tenga ese nuevo nombre de categoría.
https://gojs.net/latest/api/symbols/Model.html#nodeCategoryProperty
Para la función que he definido -
const categoryPropertyFunction = (partData: ObjectData, category?: string): string => { if (category) partData.type = category; else return partData.type; };Recibo un error de TypeScript:
TS2366: la función carece de declaración de devolución final y el tipo de devolución no incluye 'indefinido'.
Este es un ejemplo de cómo almacenar el nombre de la categoría como una propiedad de la propiedad "d" en el objeto de datos:
const model = . . .; model.nodeCategoryProperty = function (obj: go.ObjectData, str?: string): string { if (arguments.length > 1) obj.d.category = str; return obj.d.category; }; Tenga en cuenta el uso de la function en lugar de usar una función de flecha, para que uno pueda verificar la cantidad de arguments .
El mismo tipo de implementación se puede usar para las otras propiedades funcionales "...Propiedad" de las clases Modelo .