You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Luau中的Module Script添加类型注解,避免使用any类型

Luau严格模式下为Module Script添加类型注解的方法

要在严格类型检查的Luau脚本中给require引入的模块添加类型注解,避免使用any类型,你可以通过在模块内定义并导出类型的方式实现,具体步骤如下:

1. 修改Module Script定义并导出类型

在SomethingModule中,先明确模块的结构类型,再用该类型约束模块对象:

--!strict

-- 定义模块的类型结构并对外暴露
export type SomethingModuleType = {
    DoSomething: () -> () -- 声明DoSomething是无参数、无返回值的函数
}

-- 用定义好的类型约束模块对象
local SomethingModule: SomethingModuleType = {}

function SomethingModule.DoSomething()
    print("Doing something")
end

return SomethingModule

2. 在引用脚本中使用模块导出的类型

在DoSomethingScript里,直接引用模块导出的类型给变量做注解:

--!strict

-- 导入模块时,用模块导出的类型注解变量
local moduleScript: require(script.SomethingModule).SomethingModuleType = require(script.SomethingModule)

moduleScript:DoSomething() -- 类型检查通过,正常执行
moduleScript:NotMethodAndShouldRaiseWarning() -- 触发类型警告:该方法不存在于定义的类型中

关键说明

  • 使用export type可以让模块的类型被外部脚本访问
  • 注解时通过require(模块路径).类型名的方式获取模块导出的类型,无需额外导入
  • 严格模式下,类型检查器会自动校验模块的方法调用,避免调用不存在的方法

内容的提问来源于stack exchange,提问作者Ryan Luu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 07:34:55