🔥 导读:上一篇我们搞定了TS环境搭建,也搞懂了为什么大模型开发必须学TS。今天这篇,不搞复杂理论,只讲大模型开发中「最常用、最核心」的TS语法——基础类型+类型注解,1小时就能吃透,学完就能给大模型API参数、返回值做类型定义,彻底告别“参数传错”的坑!

适合人群:零基础、前端/AI开发新手,全程实战,每一行代码都能直接复制运行,结合大模型场景讲解,不学没用的语法。

一、先搞懂:TS与JS的核心区别(一句话说透)

很多人分不清TS和JS的关系,其实很简单:

TypeScript = JavaScript + 类型系统

也就是说,所有JS代码都是合法的TS代码,但TS多了“类型约束”——你可以给变量、函数参数、返回值定义“类型”,告诉TS这个值应该是什么样子,写错了就会直接报错。

举个大模型开发中的例子:

// JS代码:没有类型约束,传错类型也不报错(运行时才崩)

const temperature = "0.7"; // 应该是数字,却传了字符串

// TS代码:有类型约束,传错类型直接报错(写代码时就提醒)

const temperature: number = "0.7"; // 报错:类型“string”不能赋值给类型“number”

这就是TS的核心价值——提前规避错误,尤其在大模型API调用中,参数类型繁多,有了类型约束,能少踩很多坑。

二、大模型开发最常用的5种基础类型(必记)

TS的基础类型有很多,但大模型开发中,常用的只有5种,记住它们,就能搞定80%的基础场景,不用记所有类型!

1. 字符串类型(string)

用途:大模型API密钥(apiKey)、模型名称(model)、对话内容(content)、请求地址(url)等,都是字符串类型。

// 语法:变量名: 类型 = 值

const apiKey: string = "sk-xxxxxxxxxxxxxxxx"; // 大模型API密钥

const model: string = "qwen-max"; // 通义千问模型名称

const userContent: string = "用TS写一个大模型调用函数"; // 用户对话内容

2. 数字类型(number)

用途:大模型的temperature(温度,0~2)、max_tokens(最大生成 tokens 数)、top_p等参数,都是数字类型。

const temperature: number = 0.7; // 控制生成内容的随机性

const maxTokens: number = 1000; // 最大生成 tokens 数

const topP: number = 0.9; // 控制生成内容的多样性

3. 布尔类型(boolean)

用途:大模型的stream(流式输出,true/false)、是否开启调试模式等,都是布尔类型。

const stream: boolean = true; // 开启流式输出(打字机效果)

const debug: boolean = false; // 关闭调试模式

4. 任意类型(any)

用途:临时不确定类型的值(比如大模型返回的复杂数据,暂时不知道结构),但尽量少用——用多了就失去了TS的类型约束意义,是大模型开发中最容易踩的坑。

// 临时使用,尽量避免

let llmResponse: any = {}; // 暂时不知道返回结构,先用any

⚠️ 避坑提醒:如果长期用any定义大模型返回值,就等于放弃了TS的智能提示和类型校验,和用JS没区别,后续会踩更多坑。

5. 未知类型(unknown)

用途:替代any的“安全版本”,当你不确定类型时,用unknown比any更安全——unknown类型的值,不能直接使用,必须先判断类型,才能操作。

let llmResponse: unknown = "hello world";

// 不能直接使用,必须先判断类型

if (typeof llmResponse === "string") {

console.log(llmResponse.length); // 此时确定是string类型,才能调用length

}

大模型开发中,接收API返回值时,用unknown比any更安全,避免误操作。

三、核心语法:类型注解(大模型开发必用)

类型注解就是“给变量、函数参数、返回值贴标签”,告诉TS它们的类型,语法非常简单:标识符: 类型

下面结合大模型开发场景,讲解3种最常用的类型注解,学完就能直接用。

1. 变量的类型注解(最基础)

就是给变量定义类型,前面讲基础类型时已经用过了,再汇总一个大模型场景的示例:

// 大模型请求相关变量的类型注解
const apiKey: string = "sk-xxxxxxx";
const model: string = "gpt-3.5-turbo";
const temperature: number = 0.7;
const stream: boolean = true;
const baseUrl: string = "https://api.openai.com/v1/chat/completions";

这样定义后,只要给这些变量赋值错误的类型,TS就会直接报错,提前规避问题。

2. 函数参数的类型注解

大模型开发中,我们会写很多调用API的函数,给函数参数加类型注解,能避免传错参数类型。

// 示例:定义一个大模型请求参数的函数
function getLlmParams(
  model: string, // 模型名称:字符串类型
  temperature: number, // 温度:数字类型
  stream: boolean // 流式输出:布尔类型
) {
  return {
    model,
    temperature,
    stream,
    messages: [], // 后续会讲,暂时空数组
  };
}

// 正确调用:参数类型匹配
getLlmParams("qwen-max", 0.7, true);

// 错误调用:temperature传了字符串,直接报错
getLlmParams("qwen-max", "0.7", true); // 报错:类型“string”不能赋值给类型“number”

3. 函数返回值的类型注解

给函数返回值加类型注解,能明确函数返回的是什么类型,方便后续使用,也能避免函数返回错误的值。

// 定义函数返回值类型:对象类型(后续会详细讲,这里先了解)
function getLlmParams(
  model: string,
  temperature: number,
  stream: boolean
): { model: string; temperature: number; stream: boolean; messages: [] } {
  return {
    model,
    temperature,
    stream,
    messages: [],
  };
}

// 调用函数,能明确知道返回的结构和类型
const params = getLlmParams("qwen-max", 0.7, true);
console.log(params.model); // 智能提示:model是string类型

四、实战小任务:定义一个「大模型请求配置」类型变量

学完上面的内容,我们来做一个实战小任务,直接贴合大模型开发场景,巩固今天的知识点——定义一个完整的大模型请求配置变量,包含所有常用参数。

// 实战:定义大模型请求配置
const llmConfig: {
  apiKey: string;
  model: string;
  temperature: number;
  stream: boolean;
  maxTokens: number;
  baseUrl: string;
} = {
  apiKey: "sk-xxxxxxxxxxxxxxxx",
  model: "gpt-3.5-turbo",
  temperature: 0.7,
  stream: true,
  maxTokens: 1000,
  baseUrl: "https://api.openai.com/v1/chat/completions",
};

// 打印配置,验证是否正确
console.log("大模型请求配置:", llmConfig);

将这段代码复制到index.ts文件中,用ts-node index.ts运行,能正常打印配置,就说明你掌握了今天的知识点!

五、避坑指南:大模型开发中,TS最容易踩的坑

  1. 滥用any类型:这是最常见的坑,很多人觉得any方便,什么都用any,结果失去了TS的类型约束,和用JS没区别;

  2. 忽略类型报错:写代码时,TS提示类型错误,觉得“能运行就行”,强行忽略,后续会出现各种诡异的bug;

  3. 给变量赋值错误类型:比如把大模型的temperature赋值为字符串,虽然JS能运行,但TS会报错,一定要按照定义的类型赋值。

六、本篇总结+下一篇预告

✅ 核心收获:掌握了大模型开发最常用的5种基础类型,学会了变量、函数参数、返回值的类型注解,能独立定义大模型请求配置变量;

❌ 避坑提醒:少用any类型,重视TS的类型报错,养成“先定义类型,再写代码”的习惯;

📌 下一篇预告:《核心进阶|Interface + Type:大模型开发神器》,带你学会用Interface和Type定义复杂的大模型请求/返回类型,彻底解决“返回值字段找不到”的问题,直接搞定80%的LLM开发TS需求!

💡 评论区互动:今天的语法你学会了吗?试着自己写一个大模型请求配置变量,留言贴出你的代码,一起交流进步~

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐