Skip to content

[Feature request] User defined type guards like TypeScript's one #2476

@uga-rosa

Description

@uga-rosa

As a simple example, I would like to annotate the following @guard x string. This is in effect returning a boolean, which narrows down the type of the argument x.

---@param x unknown
---@guard x string
local function isString(x)
  return type(x) == "string"
end

---@param x string | number
local function main(x)
  if isString(x) then
    -- x is string
    print(x)
  else
    -- x is number
    print(x)
  end
end

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestfeat/LuaCats AnnotationsRelated to Lua Language Server Annotations (LuaCats)feat/type checkRelated to the type checking feature

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions