Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
253 views
in Technique[技术] by (71.8m points)

typescript - How to combine object binding keys and with the type declarations?

Is there a way of combining object binding keys and with the type declaration?

Right now I am doing this

export const useSignOut = ({
  authState,
  authToken,
  setAuthState,
  setAuthToken,
}: {
  authState: AuthState;
  authToken: OAuthToken | null;
  setAuthState: React.Dispatch<React.SetStateAction<AuthState>>;
  setAuthToken: React.Dispatch<React.SetStateAction<OAuthToken | null>>;
}) => {
...
}

but I want to avoid repeating myself with the declarations after.

I can't find it in https://www.typescriptlang.org/docs/handbook/functions.html#function-types

question from:https://stackoverflow.com/questions/65851548/how-to-combine-object-binding-keys-and-with-the-type-declarations

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Not with destructuring the argument like that, no.

You could define the type somewhere else, if it's at all reused.

import { MyTypeHere } from './somewhere'
export const useSignOut = ({
  authState,
  authToken,
  setAuthState,
  setAuthToken,
}: MyTypeHere) => {
...
}

Or you could avoid the destructuring altogether:

export const useSignOut = (options: {
  authState: AuthState;
  authToken: OAuthToken | null;
  setAuthState: React.Dispatch<React.SetStateAction<AuthState>>;
  setAuthToken: React.Dispatch<React.SetStateAction<OAuthToken | null>>;
}) => {
  console.log(options.authState)
}

Or do it like you already are. And I think that's pretty much all your options.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...