DEV Community

Discussion on: @cshooks/usetrie, A React Hook for Typeahead/Autocomplete

Collapse
 
nickytonline profile image
Nick Taylor • Edited

OK, just glanced at the code quickly, so just a few comments about improving the TypeScript code. 😉

interface Children {
   [key: string]: Node;
}

Can be written using TypeScript's built-in generic Record type.

type Children = Record<string, Node>;
  • For
constructor(public character: string = '') {}

You don't need to specify the string type as it's inferred by the default value ''.

  • For the type for getText, you can create a type and reuse it instead of using (obj: any) => string; in multiple places. Also you could rewrite this type as
<T>(obj: T) => string;

And extend T so that it respects some criteria.

  • For public methods, you don't need to specify the public keyword. It's the default.
  • For type Words = Word[];, I wouldn't bother with this type. Just use Word[].
Collapse
 
dance2die profile image
Sung M. Kim • Edited

😮...
Those are great tips, Nick 👊

Regarding the public keyword, I was confused coming from C#, in which access modifiers are private by default 😅 (now I know it's public).

And Words does seem unnecessary as Word[] shows the intention (of word being an array type) better 😂.

It seems like I need to get used to built-in types from those tips.

Thank you for providing me a way to improve the code-base, Nick.

Thread Thread
 
nickytonline profile image
Nick Taylor

No problem. Glad to see you're having fun in TypeScript land. 🎡

Thread Thread
 
dance2die profile image
Sung M. Kim

Thank you for the warm welcome.
It's been fun & need to unlearn what I know first 😉