首页 > 解决方案 > 使常量值断言其逻辑

问题描述

有没有办法在其定义上断言变量逻辑?

例如:

import React from 'react'

type TDataType = {
    my?: {
        very?: {
            complex?: {
                structure: boolean;
            }
        }
    }
}

const data: TDataType = {
    my: {
        very: {
            complex: {
                structure: true
            }
        }
    }
}

function render() {
    const hasStructure = data && data.my && data.my.very && data.my.very.complex && data.my.very.complex.structure;
    
    return (
        <div>
            {hasStructure && (
                <div>{data.my.very.complex.structure}</div>
            )}
        </div>
    )
}

Typescript 会抱怨路径data.my.very.complex可能未定义——但上面的变量应该足以测试整个路径。

有没有办法写一个助手,也许使用asserts,来避免这种情况?所以我不必写:

<div>{data!.my!.very!.complex!.structure}</div>

Playground: https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAJQKYEMDG8BmUIjgcilQ3wChSYBPMJOAFQBEUYU7raBeOAb1Ln7ghKAfgBcPPgKkA3JFBHjeU5QLS4wAGyQAPMRJUGBAZxhQArhjNFxAIwgQtKAHYBuSYf4Bfd8u9Tv3qRqTiZwACbMKOKMkWw0cFxKAkKKPjJylKkequpa2lnZyibmltZwpmZIaQZ+NT4B5JhmThjAEE5wRE5hcgAUAJT6OSHwABYoRgDKFaWc4ZFwAGSL8ywAdEJLKxHrQmuy8lurKBuU+xlrauB5RzsnewdnV5o6a8UWMFZIblI+RJ9QDq9ar8A​​A8YWA0gAfCDlNxxlMZgDaMs4MDCspwZCodw7qdzvJLrlXu9Zp5QQB6CHQ2FSfq1FSU6kwumkTxAA

标签: typescript

解决方案


推荐阅读