typescript - 类型'数字'的参数不能分配给'string'类型的参数

问题描述:

我无法弄清楚如何使这个函数不会产生编译器错误。typescript - 类型'数字'的参数不能分配给'string'类型的参数

该函数将在毫秒的持续时间和前置小时/分/秒与0,如果数量少于10

private msToTime(duration:any):string { 
    var milliseconds:string = String(parseInt((duration%1000)/100)) 
    var seconds:string = String(parseInt((duration/1000)%60)) 
    var minutes:string = String(parseInt((duration/(1000*60))%60)) 
    var hours:string = String(parseInt((duration/(1000*60*60))%24)) 

    hours = (parseInt(hours) < 10) ? "0" + hours : hours; 
    minutes = (parseInt(minutes) < 10) ? "0" + minutes : minutes; 
    seconds = (parseInt(seconds) < 10) ? "0" + seconds : seconds; 

    return hours + ":" + minutes + ":" + seconds; 
} 

试过下面的代码和编译器不会返回任何错误。

private msToTime(duration:any):string { 
    var milliseconds:string = String((duration%1000)/100) 
    var seconds:string = String((duration/1000)%60) 
    var minutes:string = String((duration/(1000*60))%60) 
    var hours:string = String((duration/(1000*60*60)%24) 

    hours = (parseInt(hours) < 10) ? "0" + hours : hours; 
    minutes = (parseInt(minutes) < 10) ? "0" + minutes : minutes; 
    seconds = (parseInt(seconds) < 10) ? "0" + seconds : seconds; 

    return hours + ":" + minutes + ":" + seconds; 
} 

你尝试调用parseInt((duration%1000)/100),其中(duration%1000)/100为int了,所以你可以放弃这个方法,并使用

var milliseconds:string = String((duration%1000)/100) 
var seconds:string = String((duration/1000)%60) 
var minutes:string = String((duration/(1000*60))%60) 
var hours:string = String((duration/(1000*60*60))%24) 

parseInt()需要一个字符串输入。因为在这里你的目的,使用Math.floor()

类型的parseInt函数函数参数字符串 这样,你可以这样做: VAR毫秒:字符串=字符串(parseInt函数((持续时间1000%)/ 100)的ToString() );