web-dev-qa-db-fra.com

Comment concatter une chaîne de caractères et un nombre dans Typescript

J'utilise une méthode pour obtenir des données

function date() {
    let str = '';

    const currentTime = new Date();
    const year = currentTime.getFullYear();
    const month = currentTime.getMonth();
    const day = currentTime.getDate();

    const hours = currentTime.getHours();
    let minutes = currentTime.getMinutes();
    let seconds = currentTime.getSeconds();
    if (month < 10) {
        //month = '0' + month;
    }
    if (minutes < 10) {
        //minutes = '0' + minutes;
    }
    if (seconds < 10) {
        //seconds = '0' + seconds;
    }
    str += year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds + ' ';

    console.log(str);
}

Et comme résultat je reçois

2017-6-13 20:36:6 

Je voudrais obtenir la même chose, mais comme

2017-06-13 20:36:06 

Mais si j'essaie l'une des lignes, que j'ai commentée, par exemple celle-ci

month = '0' + month;

Je reçois une erreur

Argument of type 'string' is not assignable to parameter of type 'number'.

Comment pourrais-je concatter une chaîne et un nombre?

12
Anna F

Littéraux de modèle (ES6 +)

Au lieu d'une concaténation comme month = '0' + month; Vous pouvez utiliser un template littal

const paddedMonth: string = `0${month}`;

Votre concaténation de chaîne se transforme ensuite en ceci par exemple:

str = `${year}-${paddedMonth}-${day} ${hours}:${minutes}:${seconds} `;

Beaucoup plus lisible, IMO.

Types d'union

Vous pouvez également utiliser un type d'union lors de la déclaration de variables.

let month: string | number = currentTime.getMonth();

if (month < 10) {
  month = '0' + month;
}
31
Tyler Miller

si vous voulez travailler avec la date, vous pouvez utiliser le module momentjs: https://momentjs.com

moment().format('MMMM Do YYYY, h:mm:ss a'); // July 13th 2017, 11:18:05 pm
moment().format('dddd');                    // Thursday
moment().format("MMM Do YY");               // Jul 13th 17
moment().format('YYYY [escaped] YYYY');     // 2017 escaped 2017
moment().format();                          // 2017-07-13T23:18:05+04:30

et à propos de l'erreur que vous avez, vous utilisez le plus souvent comme ceci:

 let monthStr: string = month;
 if ( month < 10) {
     monthStr = '0' + month;
 }
4
Ali Ebrahimi

Tout d’abord, je ne sais pas pourquoi vous définissez month comme un const et essayez ensuite de le changer. Déclarez toutes vos variables avec let et convertissez-les toutes en chaînes et vous devriez être prêt à partir.

function date() {
    let str = '';

    const currentTime = new Date();
    let year = currentTime.getFullYear().toString();
    let month = currentTime.getMonth().toString();
    let day = currentTime.getDate().toString();

    let hours = currentTime.getHours().toString();
    let minutes = currentTime.getMinutes().toString();
    let seconds = currentTime.getSeconds().toString();
    if (month < 10) {
        month = '0' + month;
    }
    if (minutes < 10) {
        minutes = '0' + minutes;
    }
    if (seconds < 10) {
        seconds = '0' + seconds;
    }
    str += year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds + ' ';

    console.log(str);
}

Regardez le travail ici: https://jsfiddle.net/40jbg8qt/

0
abagshaw

Vous pouvez utiliser quelque chose comme ceci:

let pais:string = 'Ecuador';
let codigo:number = 593;
let opcionUno:string = this.pais + this.number
let opcionDos:string = this.pais.concat(this.number);
0
martosfre