is
Updatedx is T
Type test. T is a type name: a primitive, a Roblox datatype, an Instance class, Enum.Name, or an Alloy struct or enum. x is not T negates.
is refuses a trait, an interface, a remote, and an attribute. A value never carries one, so the test could never hold. Name the type that implements the trait, or a struct that has the interface's fields.
is reads through a type alias. type B = Box tests Box, and type N = number tests number. The read takes one step, so an alias of another alias reports the way an unknown name does. An alias of a record type, a union, or a generic instantiation names no nominal test, and reports as well.
Emits type, typeof, IsA, or a metatable check, chosen by the name.
In an if, a test on a plain name narrows it in the branch. Luau refines a primitive, a class, and a datatype on its own; the check artifact adds a cast for a struct, an enum, an imported type, and RBXScriptSignal, and gives table and function a shape that indexes and calls. x is not T narrows the else branch, or the code after a guard that returns, breaks, continues, or errors.
An expression narrows too. The test narrows the right side of and and the value of its branch in an if expression or a ternary: v is P and v.x > 0. x is not T narrows the right side of or and the else value.
