Sunday, May 19, 2024
 Popular · Latest · Hot · Upcoming
166
rated 0 times [  171] [ 5]  / answers: 1 / hits: 27840  / 8 Years ago, sat, september 10, 2016, 12:00:00

I have this properties



export interface IOurFirstSpfWebPartWebPartProps {
description: string;
n1: number;
n2: number;

}


Then I have this method



public render(): void {
this.domElement.innerHTML = `
<div class=${styles.ourFirstSpfWebPart}>
<div class=${styles.container}>
<div class=ms-Grid-row ms-bgColor-themeDark ms-fontColor-white ${styles.row}>
<div class=ms-Grid-col ms-u-lg10 ms-u-xl8 ms-u-xlPush2 ms-u-lgPush1>
<span class=ms-font-xl ms-fontColor-white>Welcome to SharePoint!</span>
<p class=ms-font-l ms-fontColor-white>Customize SharePoint experiences using Web Parts.</p>
<p class=ms-font-l ms-fontColor-white>${this.properties.n1} + ${this.properties.n2}</p>
<a href=https://github.com/SharePoint/sp-dev-docs/wiki class=ms-Button ${styles.button}>
<span class=ms-Button-label>Learn more</span>
</a>
</div>
</div>
</div>
</div>`;
}


However this is printing 1+2 instead of 3.


More From » typescript

 Answers
35

You answer is related to implicit coercion in javascript. Simply put, you're concatinating two strings in a template and not adding two numbers.



When you hit the {}s in your templating syntax, your numbers will be stringified. In essence you are then adding




1 + 2 = 12




instead of




1 + 2 = 3




You can try two things:




  1. put both expressions inside of the {}




${this.properties.n1 + this.properties.n2}




If that still makes 12 then




  1. Try ${parseInt(this.properties.n1) + parseint(this.properties.n2)}. That will coerce both values to a number first, if it can be done.



You can learn more about type coercion in the article You Don't Know JS: Types & Grammar, where it will really explain all the 'gotchas' out there about the + operator and implicit types.


[#60757] Wednesday, September 7, 2016, 8 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
masonm

Total Points: 167
Total Questions: 87
Total Answers: 103

Location: Rwanda
Member since Wed, Jun 8, 2022
2 Years ago
masonm questions
;