Skip to content
Back to skills

Typescript Language

ASecurity

Prefer a literal union or a const object for application roles instead of a runtime `enum`. This keeps the allowed values available to TypeScript without emitting enum JavaScript: ```ts export const USER_ROLES = ["admin", "editor", "viewer"] as const; export type UserRole = (typeof USER_ROLES)[number]; export interface User { readonly role: UserRole; } export function canManageUsers(role: UserRole): boolean { return role === "admin"; } ``` If roles arrive from a request or database, validate ...

  • 549 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 5, 2026
developmentjavascripttypescriptjavaapidatabase

Works with

  • api

Security analysis

A100/100

Pro scans all 11 files and shows the line behind each finding

Scanned September 5, 2026

npx -y skills add HoangNguyen0403/agent-skills-standard --skill typescript-language --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Typescript Language?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Typescript Language
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/hoangnguyen0403-typescript-language-ceeeff58/badge)](https://www.skillsdirectory.com/skills/hoangnguyen0403-typescript-language-ceeeff58)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
Prefer a literal union or a const object for application roles instead of a runtime `enum`. This keeps the allowed values available to TypeScript without emitting enum JavaScript:

```ts
export const USER_ROLES = ["admin", "editor", "viewer"] as const;
export type UserRole = (typeof USER_ROLES)[number];

export interface User {
  readonly role: UserRole;
}

export function canManageUsers(role: UserRole): boolean {
  return role === "admin";
}
```

If roles arrive from a request or database, validate the string at that boundary before treating it as `UserRole`; `as const` does not perform runtime validation. A runtime enum can be justified for a legacy API that requires its emitted object, but a literal union is the default for type safety and smaller output.

Files in this skill

  • eval-1.baseline.md785 B
  • eval-1.with-skill.md769 B
  • eval-2.baseline.md1.3 KB
  • eval-2.with-skill.md1.3 KB
  • eval-3.baseline.md888 B
  • eval-3.with-skill.md659 B
  • trigger-1.md129 B
  • trigger-2.md146 B
  • trigger-3.md86 B
  • trigger-4.md116 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…