TypeScript 常见问题 - ythy/blog GitHub Wiki

  • declare interface 'XXX' 接口声明增加新字段不会立刻生效。 需要重启Webpack.
    例: 添加字段test,报错: error TS2339: Property 'test' does not exist on type 'XXX'

  • moment.js的初始化
    正确: import moment from 'moment';
    错误: import * as moment from 'moment';

  • moment.js format
    正确: moment(${elem.mDate} ${elem.mTime}, 'YYYY-MM-DD HHmmss')
    错误: moment(${elem.mDate} ${elem.mTime})
    报错信息: Deprecation warning: value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.

  • type 在接口中的使用

    usePoint: 'Y' | 'N'; //是否使用积分 Y - 使用 N - 不使用  
    

    这样可以校验 usePoint 值是否不符合约定

  • 接口的使用
    错误: let request:GBPurchaseRequsetInfo = {};
    正确: let request:GBPurchaseRequsetInfo = <GBPurchaseRequsetInfo >{}; 需要强转

  • 方法类型的声明

    1. 通过接口定义: resolve:ResolveCallback
      interface ResolveCallback{  
        (json:UJsonRespond):void;  
      }  
      
    2. resolve:{(json:UJsonRespond):void}
    3. resolve:(json:UJsonRespond) => void
  • export & import

    module.exports = {
      sha256_digest: sha256_digest
    };
    

    类似这种没有用 export default 的模块, 不能用 import X from 'x' 而要用 import * as X from 'x'

  • 接口声明文件 如果 有 importexport声明不生效

    import 'uuid';
    interface IA{
      f:string;
    }
    

    以上 IA 接口声明 无效