improve ts types

This commit is contained in:
Aylur
2024-05-29 21:36:40 +02:00
parent e5868a2514
commit 776fc80932
4 changed files with 14 additions and 10 deletions
+4 -2
View File
@@ -175,10 +175,12 @@ type BindableProps<T> = {
export type ConstructProps<
Self extends { new(...args: any[]): any },
Props = unknown,
Signals = unknown
Signals extends Record<string, Array<unknown>> = Record<string, []>
> = {
[Key in `on${string}`]: (self: Widget<Self>) => unknown
} & Partial<Signals> & BindableProps<Props & {
} & Partial<{
[sig in keyof Signals]: (self: Widget<Self>, ...args: Signals[sig]) => unknown
}> & BindableProps<Props & {
className?: string
css?: string
cursor?: string
+3 -3
View File
@@ -1,8 +1,8 @@
/* eslint-disable max-len */
import { Astal, Gtk } from "./imports.js"
import astalify, { type ConstructProps, type Widget } from "./astalify.js"
import astalify, { type ConstructProps } from "./astalify.js"
export { astalify }
export { astalify, ConstructProps }
// Label
export const Label = astalify<typeof Gtk.Label, LabelProps, "Label">(Gtk.Label)
@@ -15,7 +15,7 @@ export type IconProps = ConstructProps<typeof Astal.Icon, Astal.Icon.Constructor
// Button
export const Button = astalify<typeof Astal.Button, ButtonProps, "Button">(Astal.Button)
export type ButtonProps = ConstructProps<typeof Astal.Button, Astal.Button.ConstructorProperties, {
onClicked: (self: Widget<typeof Astal.Button>) => void
onClicked: []
}>
// Window
+4 -2
View File
@@ -170,10 +170,12 @@ type BindableProps<T> = {
export type ConstructProps<
Self extends { new(...args: any[]): any },
Props = unknown,
Signals = unknown
Signals extends Record<string, Array<unknown>> = Record<string, []>
> = {
[Key in `on${string}`]: (self: Widget<Self>) => unknown
} & Partial<Signals> & BindableProps<Props & {
} & Partial<{
[sig in keyof Signals]: (self: Widget<Self>, ...args: Signals[sig]) => unknown
}> & BindableProps<Props & {
className?: string
css?: string
cursor?: string
+3 -3
View File
@@ -1,10 +1,10 @@
/* eslint-disable max-len */
import { Astal, Gtk } from "./imports.js"
import astalify, { type ConstructProps, type Widget } from "./astalify.js"
import astalify, { type ConstructProps } from "./astalify.js"
import type GtkT from "@girs/node-gtk-3.0/node-gtk-3.0"
import type AstalT from "@girs/node-astal-0.1/node-astal-0.1"
export { astalify }
export { astalify, ConstructProps }
// Label
export const Label = astalify<typeof Gtk.Label, LabelProps, "Label">(Gtk.Label)
@@ -17,7 +17,7 @@ export type IconProps = ConstructProps<typeof Astal.Icon, AstalT.Icon.Constructo
// Button
export const Button = astalify<typeof Astal.Button, ButtonProps, "Button">(Astal.Button)
export type ButtonProps = ConstructProps<typeof Astal.Button, AstalT.Button.ConstructorProperties, {
onClicked: (self: Widget<typeof Astal.Button>) => void
onClicked: []
}>
// Window