remove most uses of as any in typescript

- replaced many uses of `as any` with another more specific cast `as T`
- filled in missing typed for items that needed to be typed
  - new runtime code was added where necessary to satisfy the new types with comments
- added missing theme variable "sidebar-active" to the Theme variables
- forms using `react-hook-form` are now typechecked
- changed some instances of `target` into `currentTarget` while removing `as any` assertions
This commit is contained in:
bree
2021-07-04 07:09:39 -04:00
parent 504f491074
commit b341f5d166
31 changed files with 161 additions and 117 deletions

View File

@@ -53,11 +53,11 @@ export function Account() {
<div className={styles.username}>@{user.username}</div>
</div>
<div className={styles.details}>
{[
{([
["username", user.username, <At size={24} />],
["email", email, <Envelope size={24} />],
["password", "*****", <Key size={24} />]
].map(([field, value, icon]) => (
] as const).map(([field, value, icon]) => (
<div>
{icon}
<div className={styles.detail}>
@@ -71,7 +71,7 @@ export function Account() {
onClick={() =>
openScreen({
id: "modify_account",
field: field as any
field: field
})
}
contrast

View File

@@ -208,7 +208,7 @@ export function Component(props: Props & WithDispatcher) {
</Button>
</div>
<div className={styles.overrides}>
{[
{([
"accent",
"background",
"foreground",
@@ -234,15 +234,15 @@ export function Component(props: Props & WithDispatcher) {
"warning",
"error",
"hover"
].map(x => (
] as const).map(x => (
<div className={styles.entry} key={x}>
<span>{x}</span>
<div className={styles.override}>
<div className={styles.picker}
style={{ backgroundColor: (theme as any)[x as any] }}>
style={{ backgroundColor: theme[x] }}>
<input
type="color"
value={(theme as any)[x as any]}
value={theme[x]}
onChange={v =>
setOverride({
[x]: v.currentTarget.value
@@ -252,7 +252,7 @@ export function Component(props: Props & WithDispatcher) {
</div>
<InputBox
className={styles.text}
value={(theme as any)[x as any]}
value={theme[x]}
onChange={y =>
setOverride({
[x]: y.currentTarget.value

View File

@@ -78,11 +78,11 @@ export function Component({ options, dispatcher }: Props & WithDispatcher) {
// tell the server we just subscribed
const json = sub.toJSON();
if (json.keys) {
if (json.keys) {;
client.req("POST", "/push/subscribe", {
endpoint: sub.endpoint,
...json.keys
} as any);
...(json.keys as { p256dh: string, auth: string })
});
setPushEnabled(true);
}
} else {

View File

@@ -11,7 +11,7 @@ import { ClientStatus, StatusContext } from "../../../context/revoltjs/RevoltCli
import AutoComplete, { useAutoComplete } from "../../../components/common/AutoComplete";
export function Profile() {
const { intl } = useContext(IntlContext) as any;
const { intl } = useContext(IntlContext);
const status = useContext(StatusContext);
const ctx = useForceUpdate();
@@ -121,7 +121,7 @@ export function Profile() {
: "placeholder"
}`,
"",
intl.dictionary
(intl as any).dictionary as Record<string, unknown>
)}
onKeyUp={onKeyUp}
onKeyDown={onKeyDown}

View File

@@ -155,7 +155,7 @@ export function Sessions() {
]);
await client.req(
"DELETE",
`/auth/sessions/${session.id}` as any
`/auth/sessions/${session.id}` as '/auth/sessions'
);
setSessions(
sessions?.filter(

View File

@@ -30,7 +30,7 @@ export function Roles({ server }: Props) {
if (role !== 'default' && typeof roles[role] === 'undefined') {
useEffect(() => setRole('default'));
return;
return <></>;
}
const v = (id: string) => I32ToU32(id === 'default' ? server.default_permissions : roles[id].permissions)