返回嵌套对象时,Typescript不返回嵌套类型

时间:2019-04-16 11:14:53

标签: typescript

我希望我的函数返回嵌套的Content类型,但是即使我们确定应该返回的类型,它也无法正常工作。让我们看一个例子:

@user.route("/edit_profile/", methods=['GET', 'POST'])
def edit_profile():
    form = EditProfileForm()
    if form.validate_on_submit():
        user = User.query.filter_by(username=current_user.username).first()
        user.username = form.username.data
        user.about_me = form.about_me.data
        # if form.profile_picture.data: # this returns None
        #     user.profile_pic = process_image(form.profile_picture.data,
        #                                      user.username)
        print(isinstance(form.profile_picture, FileStorage))
        db.session.commit()
        return redirect(url_for("user.profile", uname=current_user.username))
    elif request.method == 'GET':
        form.username.data = current_user.username
        form.about_me.data = current_user.about_me
    return render_template('user/user_edit_profile.html', form=form)

LIVE EXAMPLE

我希望“ some”包含并提出“ extra”和“ prop”,但是使用“ extra”会抛出TypeScript。

2 个答案:

答案 0 :(得分:2)

使用通用类型参数定义函数,以便Typescript可以正确推断类型:

const factory = (content: Content) => {
    return <K extends keyof Content>(key: K) => {
        return content[key];
    };
};

See this live example.

答案 1 :(得分:1)

修复非常简单:

const factory = (content: Content) => {
    return <T extends keyof Content>(key: T) => {
        return content[key];
    };
};

区别在于,现在我们将key的类型限制为传递字符串文字,而不是任何Content

相关问题