It’s faster than not type checking and obviously runtime type checking.

Now I can become the

for Luau.

(yes I’ve been waiting to use this)

I forgot to attach the benchmark, and it shows my (stupid) assumptions I had beforehand.

And for the code if you want to run it yourself:

```
local Functions = {}
local function AddTyped(X: number, Y: number) => number
return X + Y
end
local function AddRuntime(X, Y)
if type(X) ~= "number" or type(Y) ~= "number" then
error("bad type boo")
end
return X + Y
end
local function AddUntyped(X, Y)
return X + Y
end
Functions["Luau Types"] = function()
return AddTyped(5, 10)
end
Functions["Runtime Types"] = function()
return AddRuntime(5, 10)
end
Functions["No Types"] = function()
return AddUntyped(5, 10)
end
require(4185109675).new(1, "Title", Functions)
```

Found an annoying bug. It’s not being redefined twice, as it’s in an `if-else`

block.

Another one, this time with no explanation whatsoever for why it happens. I don’t even call `::GetComponents`

once in the entire module.