DEV Community

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

Collapse
 
nickytonline profile image
Nick Taylor

Will check out the repo this week Sung. Just back from vacation, so my body is back from the beach but not my brain. 😉

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 😉