소스 정보
- 저장소
- microwind/ai-skills
- 최근 소스 활동
- 2026년 3월 29일 02:54
- 감지된 SKILL.md 언어
- 중국어
- 스타
- 68
- 포크
- 17
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/microwind/ai-skills --skill typescript명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | TypeScript编程 |
| description | 当使用TypeScript编程时,分析类型系统,优化代码结构,解决类型安全问题。验证类型设计,构建大型应用,和最佳实践。 |
| license | MIT |
TypeScript是JavaScript的超集,添加了静态类型检查、类、接口、泛型等特性。TypeScript通过编译时类型检查提高了代码的可维护性和开发效率,特别适合构建大型、复杂的前端和后端应用。不当的TypeScript使用会导致类型冗余、编译错误、开发效率降低。
核心原则: 好的TypeScript代码应该类型安全、结构清晰、可维护性强、开发效率高。坏的TypeScript代码会过度类型化、类型滥用、编译复杂。
始终:
触发短语:
问题: 类型过于复杂
原因: 过度使用高级类型
解决: 简化类型定义,使用类型别名
问题: 类型推断失败
原因: 类型信息不足
解决: 添加类型注解,使用类型断言
问题: 编译速度慢
原因: 项目规模大,配置不当
解决: 优化tsconfig配置,使用增量编译
问题: 类型检查过于严格
原因: 编译选项设置不当
解决: 调整strict相关选项
// 基础类型
let isDone: boolean = false;
let decimal: number = 6;
let color: string = "blue";
let list: number[] = [1, 2, 3];
let x: [string, number] = ["hello", 10];
// 枚举
enum Color {
Red,
Green,
Blue
}
let c: Color = Color.Green;
// any和unknown
let notSure: any = 4;
let value: unknown = 4;
// void和never
function warnUser(): void {
console.log("This is a warning message");
}
function error(message: ): {
(message);
}
{
: ;
: ;
?: ;
: ;
}
{
(: , : ): ;
}
: = () {
source.(subString) > -;
};
{
[: ]: ;
}
: = [, ];
: = myArray[];
{
: ;
() {
. = firstName + + middleInitial + + lastName;
}
}
{
: ;
: ;
}
() {
+ person. + + person.;
}
user = (, , );
.((user));
// 泛型函数
function identity<T>(arg: T): T {
return arg;
}
let output = identity<string>("myString");
let output2 = identity<number>(100);
// 泛型约束
interface Lengthwise {
length: number;
}
function loggingIdentity<T extends Lengthwise>(arg: T): T {
console.log(arg.length);
return arg;
}
loggingIdentity({length: 10, value: 3});
// 泛型类
class GenericNumber<T> {
zeroValue: T;
add: (x: T, y: T) => T;
}
let myGenericNumber = new GenericNumber<number>();
myGenericNumber.zeroValue = 0;
myGenericNumber.add = function(x, y) { return x + y; };
// 泛型接口
interface Box<T> {
contents: T;
}
let box: <> = {
:
};
<T> = T ? : ;
= <>;
= <>;
<T> = {
[P keyof T]: T[P]
};
<T> = {
[P keyof T]?: T[P]
};
{
: ;
: ;
}
= <>;
= <>;
<T> = {
[P keyof T]-?: T[P]
};
<T, K keyof T> = {
[P K]: T[P]
};
<T, K keyof T> = <T, <keyof T, K>>;
= <>;
= <>;
= <, >;
= <, >;
// 联合类型和交叉类型
type UnionType = string | number;
type IntersectionType = Person & Student;
// 字面量类型
type Direction = "North" | "South" | "East" | "West";
// 函数重载
function padLeft(value: string, padding: string): string;
function padLeft(value: string, padding: number): string;
function padLeft(value: string, padding: string | number): string {
if (typeof padding === "number") {
return Array(padding + 1).join(" ") + value;
}
if (typeof padding === "string") {
return padding + value;
}
throw ();
}
(): value is {
value === ;
}
() {
((value)) {
.(value.());
}
}
: = ;
: = (someValue ).;
(): {
name!;
}
{
: ;
: ;
}
{
: ;
: ;
: ;
}
{
: ;
: ;
}
= | | ;
(): {
(s.) {
: s. * s.;
: s. * s.;
: . * s. ** ;
}
}
{
: T;
: | ;
}
<T > = ;
= <>;
= keyof ;
= [];
= T | ? : T;
= | ;
= <>;
// 类装饰器
function sealed(constructor: Function) {
Object.seal(constructor);
Object.seal(constructor.prototype);
}
@sealed
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
// 方法装饰器
function enumerable(value: boolean) {
return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
descriptor.enumerable = value;
};
}
class Greeter2 {
greeting: string;
constructor(message: string) {
this. = message;
}
()
() {
+ .;
}
}
() {
() {
originalMethod = descriptor.;
descriptor. = () {
result = originalMethod.(, args);
;
};
};
}
{
: ;
() {
. = name;
}
()
(): {
.;
}
}
() {
.();
}
{
: ;
() {
. = greeting;
}
}
() {
: ;
= () => {
value;
};
= () => {
value = newVal.();
};
.(target, propertyKey, {
: getter,
: setter,
: ,
:
});
}
{
: ;
() {
. = title;
}
}
product = ();
.(product.);
product. = ;
.(product.);
// 模块导出
// math.ts
export function add(x: number, y: number): number {
return x + y;
}
export function subtract(x: number, y: number): number {
return x - y;
}
export default function multiply(x: number, y: number): number {
return x * y;
}
// 模块导入
import { add, subtract } from './math';
import multiply from './math';
let result = add(5, 3);
let result2 = multiply(4, 5);
// 命名空间
namespace Validation {
export interface StringValidator {
isAcceptable(s: ): ;
}
lettersRegexp = ;
{
() {
lettersRegexp.(s);
}
}
numberRegexp = ;
{
() {
s. === && numberRegexp.(s);
}
}
}
strings = [, , ];
: { [: ]: . } = {};
validators[] = .();
validators[] = .();
validators[] = .();
( s strings) {
.();
}
{
: ;
: ;
}
{
: ;
}
: = {
: ,
: ,
:
};
{
: = ;
() {
. = ;
}
}
{
: = ;
() {
. = ;
}
() {
. = ;
}
}
mix<T , U >(: T, : U): T & U {
base {
() {
(...args);
.(, ());
}
};
}
{
() {}
}
, {
}
= (, );
// API响应类型定义
interface ApiResponse<T> {
data: T;
message: string;
success: boolean;
}
interface User {
id: number;
name: string;
email: string;
avatar?: string;
}
// 服务类
class UserService {
private baseUrl: string;
constructor(baseUrl: string) {
this.baseUrl = baseUrl;
}
async getUser(id: number): Promise<ApiResponse<User>> {
const response = await fetch(`${this.baseUrl}/users/${id}`);
const data = await response.json();
return {
data: data,
message: "User fetched successfully",
success:
};
}
(: <, >): <<>> {
response = (, {
: ,
: {
:
},
: .(userData)
});
data = response.();
{
: data,
: ,
:
};
}
(: , : <>): <<>> {
response = (, {
: ,
: {
:
},
: .(updates)
});
data = response.();
{
: data,
: ,
:
};
}
}
= {
: | ;
: ;
: | ;
};
=
| { : ; : }
| { : ; : }
| { : ; : }
| { : };
(): {
(action.) {
:
{ ...state, : action., : , : };
:
{ ...state, : action. };
:
{ ...state, : action., : };
:
{ ...state, : };
:
state;
}
}
<T = > {
: T;
?: ;
: ;
}
{
: <>;
: <>;
: <>;
}
<T> = | ;
{
: <>;
: <>;
: <>;
}
: = {
: {
emailRegex = ;
emailRegex.(email) ? : ;
},
: {
password. >= ? : ;
},
:
};
<T <, >> {
: T;
: <<keyof T, >> = {};
() {
. = { ...initialData };
}
setValidator<K keyof T>(: K, : <T[K][]>) {
.[field] = validator;
}
setValue<K keyof T>(: K, : T[K][]) {
.[field] = {
....[field],
value,
:
};
.(field);
}
validateField<K keyof T>(: K): | {
validator = .[field];
(!validator) ;
error = (.[field].);
.[field] = {
....[field],
error
};
error;
}
(): {
isValid = ;
( field .) {
error = .(field keyof T);
(error) isValid = ;
}
isValid;
}
(): T {
.;
}
}
: = {
: { : , : },
: { : , : },
: { : , : }
};
formHandler = (initialLoginForm);
formHandler.(, validators.);
formHandler.(, validators.);
formHandler.(, validators.);
formHandler.(, );
formHandler.(, );
formHandler.(, );
isValid = formHandler.();
formData = formHandler.();