산술 연산의 왼쪽과 오른쪽은 'any', 'number' 또는 열거형이어야 합니다.
저는 다음과 같은 오류가 발생하고 있습니다.제가 정확히 어디가 잘못되었는지 알 수가 없습니다.누가 해결책 좀 도와줄 수 있습니까?
코드를
function() {
this.devices.forEach(device => {
let lastConnect = device.lastConnection.split('+');
lastConnect = lastConnect[0] + 'Z';
let diff = Math.abs(new Date() - new Date(lastConnect));//getting error here
}
저는 그 문제를 알아냈습니다.
작성하신 코드는 자바스크립트에서만 동작합니다.
Math.abs(new Date() - new Date(lastConnect)) .
Typescript에서 작동하려면 아래와 같이 코드를 업데이트합니다.
Math.abs(new Date().getTime() - new Date(lastConnect).getTime());
말할 것도 없이, 당신의 코드는 자바스크립트에서 정확하게 작동합니다. 타이프스크립트에서 같은 결과를 얻고 싶다면, 당신은 3가지 옵션이 있습니다.
(1) - 의 도움으로valueOf
let diff = Math.abs(new Date().valueOf() - new Date(lastConnect).valueOf());
(2) - 의 도움으로getTime
let diff = Math.abs(new Date().getTime() - new Date(lastConnect).getTime());
// or
let diff = new Date().getTime() - new Date(lastConnect).getTime();
(3) - 의 도움으로any
let diff = Math.abs(<any>new Date() - <any>new Date(lastConnect))
가장 간단한 대답은
Math.abs(<any>new Date() - <any>new Date(lastConnect));
필요 없음Math.abs()
이 질문에 대한 답을 하자면...
그냥 사용.getTime()
메서드는 날짜를 숫자(Date.prototype.getTime())로 변환하므로 오류 없이 작업을 수행할 수 있습니다.
또 다른 좋은 방법:
Math.abs((new Date() as any) - (new Date(lastConnect) as any));
타이프스크립트는 암묵적 변환에 문제가 있는 것 같으므로, 우리는 단지 그것들을 명시적으로 만들 수 있습니다.
Math.abs(+new Date() - +new Date(lastConnect));
참고로 괄호는 필요 없습니다. 왜냐하면,new
연산자 바인딩이 (단일)보다 더 엄격합니다.+
교환입니다.결국.(+new)
말이 안 돼요. 그.+
후에-
필요하기도 합니다.
사용합니다.any
기본적으로 형식 검사를 비활성화하기 때문에 최후의 수단으로만 사용할 수 있습니다.
타이프스크립트를 만족시키기 위해 코드 조각을 너무 많이 수정하는 것은 잘못된 가정으로 인해 오류가 발생할 수 있기 때문에 항상 안전하지는 않습니다.이것은 특히 오래된 .js 파일을 .ts 파일로 변환하기로 결정할 때 발생합니다.일반적으로 암묵적 전환을 명시적으로 하는 것이 가장 안전한 접근법이라고 생각합니다.
저도 같은 문제가 있습니다.*ngIf="event && +event.enableSomething"
, 가끔 받는 것처럼"0"
데이터 파싱이 필요하지만 이벤트 인터페이스가 생성되었습니다.enableSomething: boolean
그래서 그 경우에 저는 그 실수를 만회하고 있었습니다.
이 문제를 해결하려면 백엔드가 부울을 반환하고 종료해야 합니다.enableSomething: boolean
인터페이스에서 또는 인터페이스를 에 수정합니다.enableSomething: any
제 쪽과 같은 문제를 가진 사람에게 도움이 되었으면 좋겠습니다.
나의 경우에는 다음과 같이 덧붙입니다..valueOf()
투입후에Math.abs()
Math.round(valA.valueOf() / 20)
문서에 따르면:
그
valueOf()
메서드는 지정한 개체의 프리미티브 값을 반환합니다.
언급URL : https://stackoverflow.com/questions/48274028/the-left-hand-and-right-hand-side-of-an-arithmetic-operation-must-be-of-type-a
'programing' 카테고리의 다른 글
Chrome에서 Ajax 동기화 요청 실패 (0) | 2023.09.27 |
---|---|
다중 삽입 쿼리를 준비할 때 오류가 발생했습니다. (0) | 2023.09.27 |
왜 jQuery를 두번 선언합니까? (0) | 2023.09.27 |
데이터 프레임의 현재 파티션 수 가져오기 (0) | 2023.09.27 |
이미지 너비를 부모 디브의 100%로 만들되 자신의 너비보다 크지 않게 만듭니다. (0) | 2023.09.27 |