如何为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
相关产品推荐
相关产品推荐

