zoukankan      html  css  js  c++  java
  • [TypeScript] Use the TypeScript "unknown" type to avoid runtime errors

    The "any" type can be very useful, especially when adding types to an existing JavaScript codebase, but it can also lead to lots of runtime errors, as it provides no type-checking. The "unknown" type on the other hand, restricts developer from calling anything on it or assigning to any other type. The only way to use "unknown" variables is to apply logic flow type narrowing or casting, as that's the only way TypeScript can trust that it's dealing with a correct type. The "unknown" type is useful when building services or APIs that can return data of an unknown shape, so we might want to stop other developers from using it in potentially dangerous ways until it's been narrowed down to a specific type.

    "any" type can pass in the compile phases without any problem, but will throw error in runtime.

    We can use new type: 'unknown'.

    For exmaple, we have code:

    interface IComment {
        date: Date;
        message: string;
    }
    
    interface IDataService {
        getData(): unknown;
    }
    
    let service: IDataService;
    
    const response = service.getData();

    You cannot directly use 'unknown' type, we have to tell Typescipt what type it is:

    if(typeof response === 'string') {
        console.log(response.toUpperCase());
    } else if(isComment(response)){
        response.date;
    }
    
    function isComment(type: any): type is IComment {
        return (<IComment>type).message !== undefined && (<IComment>type).date !== undefined;
    }
  • 相关阅读:
    如何使用VS2013进行单元测试和查看代码覆盖率
    荔枝架构演进历程读后感
    关于海尔电商峰值系统架构读后感
    苏宁易购:商品详情系统架构设计读后感
    第二阶段冲刺第四天
    第二阶段冲刺第五天
    第二阶段冲刺第三天
    第二阶段冲刺第二天
    第二阶段冲刺第一天
    第一阶段末尾
  • 原文地址:https://www.cnblogs.com/Answer1215/p/10301078.html
Copyright © 2011-2022 走看看