refactor: use new type solver

This commit is contained in:
littensy 2026-04-02 06:49:54 -07:00
parent 748dbc5014
commit 22b440e35f
32 changed files with 169 additions and 155 deletions

View file

@ -13,12 +13,12 @@ local React = require("./React")
@param dependencies An array of values used to memoize the getter.
@return The current state.
]]
local function useSignalState<T>(getter: () -> T, dependencies: { any }?): T
local function useSignalState<T>(getter: () -> T, dependencies: {}?): T
local value, setValue = React.useState(getter)
React.useLayoutEffect(function()
return Charm.listen(getter, setValue)
end, dependencies or {})
return Charm.listen(getter, setValue :: (T, T?) -> ())
end, dependencies :: { any } or {})
return value
end
@ -34,13 +34,13 @@ end
@param dependencies An array of values used to memoize the getter.
@return A binding that stores the current state.
]]
local function useSignalBinding<T>(getter: () -> T, dependencies: { any }?)
local function useSignalBinding<T>(getter: () -> T, dependencies: {}?)
local initialValue = React.useMemo(getter, {})
local binding, setBinding = React.useBinding(initialValue)
React.useLayoutEffect(function()
return Charm.listen(getter, setBinding)
end, dependencies or {})
return Charm.listen(getter, setBinding :: (T, T?) -> ())
end, dependencies :: { any } or {})
return binding
end

View file

@ -13,12 +13,13 @@ local function renderHook<Props, Result>(callback: (Props) -> Result, props: Pro
local function Component(props: Props)
hook.result = callback(props)
return nil
end
function hook.rerender(newProps: Props?)
props = newProps or props
ReactRoblox.act(function()
root:render(React.createElement(Component, props))
root:render(React.createElement(Component, props) :: any)
end)
end

View file

@ -1,5 +1,6 @@
local test = require("../../tests/test")
-- selene: allow(global_usage)
_G.__ROACT_17_MOCK_SCHEDULER__ = true
test.describe("useSignalState", function()