作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 NextJS,需要扩展他们的 AppProps
输入我自己添加的可选参数Layout
.然而 AppProps
类型由许多其他类型组成,例如
应用 Prop :
export declare type AppProps<P = {}> = AppPropsType<Router, P>;
应用 Prop 类型:
export declare type AppPropsType<R extends NextRouter = NextRouter, P = {}> = AppInitialProps & {
Component: NextComponentType<NextPageContext, any, P>;
router: R;
__N_SSG?: boolean;
__N_SSP?: boolean;
};
下一个组件类型:
export declare type NextComponentType<C extends BaseContext = NextPageContext, IP = {}, P = {}> = ComponentType<P> & {
/**
* Used for initial page load data population. Data returned from `getInitialProps` is serialized when server rendered.
* Make sure to return plain `Object` without using `Date`, `Map`, `Set`.
* @param ctx Context of `page`
*/
getInitialProps?(context: C): IP | Promise<IP>;
};
来自我的
_app.tsx
我希望能够添加
Layout
至
Component
有类似的东西:
Component: {
Layout?: React.FunctionComponent;
};
AppProps
有没有办法做到这一点?或者我需要扩展/相交
AppPropsType
首先是
Layout
然后重新声明我自己的
AppProps
它使用扩展
AppPropsType
?
最佳答案
起初,我有这个丑陋的烂摊子来阻止错误:
import { AppProps } from 'next/app'
export default function App({ Component, pageProps }: AppProps) {
const RedeclaredAndHacky_Component = Component as any
const Layout = RedeclaredAndHacky_Component.layoutProps?.Layout || Fr
/* Rest of the function */
}
我真的不喜欢这个,所以我最终得到了更接近你描述的东西:
import { NextComponentType, NextPageContext } from 'next'
type AppProps = {
pageProps: any
Component: NextComponentType<NextPageContext, any, {}> & { layoutProps: any }
}
export default function App({ Component, pageProps }: AppProps) {
const Layout = Component.layoutProps?.Layout || Shell
/* Rest of the function */
}
关于javascript - 使用可选属性扩展 TypeScript 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64170731/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!