第一个示例
用 5 分钟构建你的第一个 DaoMind 模块。
目标
创建一个简单的用户问候模块,演示无名与有名的完整工作流程。
第一步:定义契约(无名)
typescript
// src/contracts/greeter.ts
// 无名:类型契约,编译后消失
export interface GreeterContract {
readonly name: string
greet(user: string): string
greetAsync(user: string): Promise<string>
}第二步:创建实现(有名)
typescript
// src/modules/greeter.ts
import type { GreeterContract } from '../contracts/greeter'
// 有名:运行时实现
export const chineseGreeter = {
name: 'chinese-greeter',
greet(user: string): string {
return `你好,${user}!欢迎使用 DaoMind。`
},
async greetAsync(user: string): Promise<string> {
// 模拟异步操作
await new Promise((resolve) => setTimeout(resolve, 100))
return `异步问候:你好,${user}!`
},
} satisfies GreeterContract // TypeScript 验证实现符合契约第三步:使用模块
typescript
// src/main.ts
import { chineseGreeter } from './modules/greeter'
// 同步使用
const greeting = chineseGreeter.greet('道友')
console.log(greeting) // 你好,道友!欢迎使用 DaoMind。
// 异步使用
const asyncGreeting = await chineseGreeter.greetAsync('道友')
console.log(asyncGreeting) // 异步问候:你好,道友!运行结果
你好,道友!欢迎使用 DaoMind。
异步问候:你好,道友!关键点
- 契约先行 — 先写接口,再写实现
satisfies关键字 — TypeScript 验证实现完整性- 类型消失 — 编译后
GreeterContract完全不存在 - 运行时干净 — 只有真正需要的代码
