.valueOf()
and方法.toString()
?export default class Measure extends Number implements Number {
public symbol = ''
constructor(value: number | string | Measure, symbol?: string) {
super(value)
if (symbol) {
this.symbol = symbol
}
}
public valueOf = (): number => {
return parseFloat(this.toPrecision(12))
}
public toString = (): string => {
return String(this.valueOf()) + this.symbol
}
}
Run Code Online (Sandbox Code Playgroud)
.valueOf()
.toString()
import Measure from '../src/testing'
describe('Measure Class', () => {
const measure = new Measure(1, 'm')
// Number() - works!
test('Number', () => {
const number = Number(measure)
expect(number).toBe(1)
})
// String - works!
test('String', () => {
const string = String(measure)
expect(string).toBe('1m')
})
/**
* Number context - fails!
* Operator '+' cannot be applied to types '1' and 'Measure'.ts(2365)
*/
test('Number + Measure', () => {
const number = 1 + measure
expect(number).toBe(2)
})
/**
* String context - fails!
* Expected: "is: 1m"
* Received: "is: 1"
*/
test('String + Measure', () => {
const string = 'is: ' + measure
expect(string).toBe('is: 1m')
})
})
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
893 次 |
最近记录: |