feat(TypeScript): add TypeScript support