小编kus*_*lvm的帖子

无法调用可能是“未定义”的对象。ts(2722)

我有一个按钮组件。我只是将onClick我定义的许多可选道具中的一个道具传递给它:

const Button = (props: ButtonProps) => {
    const handleClick: React.MouseEventHandler<HTMLButtonElement | HTMLAnchorElement> = e => {
        props.onClick(e);
    }
    return (
        <StyledButton onClick={handleClick}>
            {props.children}
        </StyledButton>
    );
};
Run Code Online (Sandbox Code Playgroud)

然后我像这样使用它:

<Button onClick={(e) => {
    console.log(e);
}}>Click me!</Button>
Run Code Online (Sandbox Code Playgroud)

现在如何根据所提到的错误,对象可能是未定义的?我清楚地将函数传递给它,并且根据类型定义也是如此。所以,我将一个对象传递给它。够简单!

...
onClick?: React.MouseEventHandler<HTMLElement>
...
Run Code Online (Sandbox Code Playgroud)

我最近在这个项目中添加了一些更严格的检查,相关的检查是:

"strictFunctionTypes": true,
"strictNullChecks": true
Run Code Online (Sandbox Code Playgroud)

strict:true 已经存在,此错误从未发生。

这里有什么问题?

更新 - 添加的类型

export interface IBaseButtonProps {
    type?: ButtonType;
    disabled?: boolean;
    size?: ButtonSize;
    block?: boolean;
    loading?: boolean | { delay?: number };
    icon?: string;
    className?: string;
    prefixCls?: string;
    children?: React.ReactNode; …
Run Code Online (Sandbox Code Playgroud)

typescript reactjs

31
推荐指数
5
解决办法
6万
查看次数

仅黑白差异排除和省略(选择和排除)打字稿

根据Pick @ typescriptlang.org的定义,它仅为提到的属性构造一个新类型。Exclude @ typescriptlang.org与它相反。

我见过以下用法

export type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
Run Code Online (Sandbox Code Playgroud)

但我不太明白。我们本可以简单Exclude地忽略非必填字段并构建一种新类型的字段。为什么组合PickExclude用作Omit

另一个例子:

function removeName<Props extends ExtractName>(
  props: Props
): Pick<Props, Exclude<keyof Props, keyof ExtractName>> {
  const { name, ...rest } = props;
  // do something with name...
  return rest;
}
Run Code Online (Sandbox Code Playgroud)

上面的返回类型不能用Excludeas重写Exclude<Props, ExtractName>吗?

typescript

27
推荐指数
1
解决办法
7415
查看次数

函数重载与函数模板 - C++

在关于C++的书籍中,当我们在C++中使用模板时,为什么我们会教我们使用函数重载

展示模板的有效(和正确)使用不是更好吗?与大多数C++书籍中教授函数重载的地方相反?

或者,是否有充分的理由使用一个而不是另一个?

c++ templates overloading

22
推荐指数
3
解决办法
2万
查看次数

regex_substr中的connect by子句

我不能理解这个陈述 - 在谷歌搜索后不是eveN

 
pv_no_list :='23,34,45,56';
SELECT   DISTINCT REGEXP_SUBSTR (pv_no_list,
                                                     '[^,]+',
                                                     1,
                                                     LEVEL)
                                         no_list
                      FROM   DUAL
                CONNECT BY   REGEXP_SUBSTR (pv_no_list,
                                            '[^,]+',
                                            1,
                                            LEVEL) IS NOT NULL

sql oracle oracle10g

17
推荐指数
2
解决办法
2万
查看次数

使用admin选项创建用户oracle 11g命令不起作用

好的,这个命令不起作用

create user username identified by password with admin option ;

它会抛出一个错误 missing or invalid option

我以系统身份登录.我试过搜索Oracle文档,他们编写了相同的命令.我在这做错了什么?

sql oracle oracle11g

7
推荐指数
1
解决办法
5万
查看次数

如何在wordpress中获取页面标题

好吧,我试过了 <?php echo get_the_title('About Us');?>

但是代码不起作用.我正在使用wordpress 4.1.这应该有效,但事实并非如此.wordpress是否更新了这些功能?

wordpress page-title

7
推荐指数
4
解决办法
4万
查看次数

遍历表列-jQuery

给定一个3乘3表,我想为第3列的所有单元格添加一个类.

我试过了

$( 'td:eq(3)' ).addclass('special');
$( 'td:eq(5)' ).addclass('special');
$( 'td:eq(8)' ).addclass('special');
Run Code Online (Sandbox Code Playgroud)

但问题是编写3行代码.一行代码可以做到吗?

javascript jquery jquery-traversing

5
推荐指数
2
解决办法
1019
查看次数

如果使用Jsx,如何在Vuejs 2.x中使用片段?

鉴于此,React有Fragments,而官方的github 线程也没有提供任何解决方案。

Vuejs中的解决方法是什么。这可能有助于开发人员从React后台迁移到Vuejs,即谁更喜欢渲染函数样式和JSX?

javascript vue.js vuejs2

5
推荐指数
1
解决办法
924
查看次数

Babel 忽略与排除选项

即使在阅读了他们的文档之后,我也没有明白黑白 babel排除忽略选项的区别。

我的理解是,它exclude的攻击性比ignore. 并使exclude当前配置对象处于非活动状态并ignore停止处理。

也许如果 babel 团队的某个人(或任何 babel 专家)能够为公众提供良好的服务,我们将不胜感激。

babeljs

5
推荐指数
1
解决办法
4834
查看次数

'(e: ChangeEvent&lt;HTMLInputElement&gt;) =&gt; void' 不可分配给类型 '((event: ChangeEvent&lt;HTMLInputElement&gt;) =&gt; void)

export interface InputProps {
    type?: string;
    name?: string;
    value?: CommonTypeTuple;
    placeholder?: string;
    label?: string;
    error?: string;
    helpText?: string;
    block?: boolean;
    disabled?: boolean;
    onChange?: ChangeHandler<string>;
    onBlur?: BlurHandler<string | number>;
}

export const Input = ({
    type = "text",
    name = "",
    placeholder,
    error,
    block = false,
    disabled = false,
    onChange = () => {},
    onBlur = () => {},
    value,
    className = "",
    ...rest
}: InputProps & React.InputHTMLAttributes<HTMLInputElement>) => {
    const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
        onChange(e.target.value, e.target.name);
    };
    const …
Run Code Online (Sandbox Code Playgroud)

typescript reactjs styled-components

5
推荐指数
1
解决办法
7016
查看次数