Angular 打字机脚本:";X";不可转让给类型、类型的财产”;“是”;不相容

Angular 打字机脚本:";X";不可转让给类型、类型的财产”;“是”;不相容,angular,date,typescript,Angular,Date,Typescript,注:我对Angular2和打字很陌生,所以很抱歉我的无知 问题是: 我想做的是从结束日期/时间中减去开始日期/时间,然后在计算公式中使用它显示为“calc”。问题是,我可以给calc一个静态的数字,但如果我尝试使用数学公式,它在传输时会出现各种错误: 一, 模拟订单.ts(4,14):错误TS2322:类型“{order\u no:string;scheduled:string;lateral:string;start\u time:string;checks:string;stop\u…”不能

注:我对Angular2和打字很陌生,所以很抱歉我的无知

问题是: 我想做的是从结束日期/时间中减去开始日期/时间,然后在计算公式中使用它显示为“calc”。问题是,我可以给calc一个静态的数字,但如果我尝试使用数学公式,它在传输时会出现各种错误:

一, 模拟订单.ts(4,14):错误TS2322:类型“{order\u no:string;scheduled:string;lateral:string;start\u time:string;checks:string;stop\u…”不能分配给类型“order[]”

类型“{order\u no:string;scheduled:string;lateral:string;start\u time:string;checks:string;stop\u…”不可分配给类型“order”

属性“检查”的类型不兼容

类型“string”不可分配给类型“number”

下面是我遇到这些问题的子组件。 请参见第28行this.calc:

     // order.ts
import { Component, OnInit } from '@angular/core';

export class Order {
    order_no: string;
    scheduled: string;
    lateral: string;
    start_time: string;
    checks: number;
    stop_time: string;
    status: string;
    approx_cfs: string;
    approx_hrs: string;
    approx_af: string;
    calc: number;

    constructor(data: {} = {}) {
    this.order_no = data["order_no"] || "";
    this.scheduled = data["scheduled"] || "";
    this.lateral = data["lateral"] || "";
    this.start_time = data["start_time"] || "";
    this.checks = data["checks"] || "";
    this.stop_time = data["stop_time"] || "";
    this.status = data["status"] || "";
    this.approx_cfs = data["approx_cfs"] || "";
    this.approx_hrs = data["approx_hrs"] || "";
    this.approx_af = data["approx_af"] || "";
    this.calc = (!this.stop_time ? ((new Date().getTime() - new Date(this.start_time).getTime()) / 1000.0 / 60.0 / 60.0) * this.checks * 0.0825 : ((new Date(this.stop_time).getTime() - new Date(this.start_time).getTime()) /1000.0 / 60.0 / 60.0) * this.checks * 0.0825); 

    console.log(this.calc);
    };

};
我敢肯定,问题的一部分是我试图对日期使用数学运算,然后将结果分配给数字类型

以下命令调用此组件以在服务中使用:

// order.service.ts
import { Injectable } from '@angular/core';

import { Order } from './order';
import { ORDERS } from './mock-orders';

@Injectable()
export class OrderService {
  getOrders(): Promise<Order[]> {
    return Promise.resolve(ORDERS);
  }
}
由于
Date.parse()
首先尝试将输入转换为数字,然后从中获取等效的日期,在js中,使用诸如“-”或“/”等数字以外的字符转换字符串将导致NaN结果中的Date.parse也将返回NaN。您可以使用
new Date(str:String)
在本例中,从有效的日期字符串生成日期对象。您还可以使用
getTime()
函数对日期进行数学运算

let数据={
订单号:12346,
计划:“08/17/16 11:45”,
横向:“L1-8-1-T7,L1-8-1-T6”,
开始时间:“08/17/16 15:30”,
支票:“20.25”,
停止时间:“”,
状态:“正在运行”,
约为:25.00,
大约10小时:,
约为20.63英尺,
};
this.order_no=data[“order_no”]| |“”;
this.scheduled=数据[“scheduled”]| |“”;
this.lateral=数据[“lateral”]| |“”;
this.start_time=data[“start_time”]| |“”;
this.checks=数据[“checks”]| |“”;
this.stop_time=data[“stop_time”]| |“”;
this.status=data[“status”]| |“”;
this.approx_cfs=数据[“approx_cfs”]| |”;
this.approx_hrs=数据[“approx_hrs”]| |“;
this.approx_af=数据[“approx_af”]| |“;
this.calc=(!this.stop_time?((new Date().getTime()-new Date(this.start_time).getTime())/1000.0/60.0/60.0)*this.checks*0.0825:((new Date(this.stop_time).getTime()-new Date(this.start_time).getTime())/1000.0/60.0)*this.checks*0.0825);
console.log(calc);
因为
Date.parse()
首先尝试将输入转换为数字,然后从中获取等效的日期,在js中,使用诸如“-”或“/”等数字以外的字符转换字符串将导致在NaN结果中日期。parse也将返回NaN。您可以使用
新日期(str:String)
在本例中,从有效的日期字符串生成日期对象。您还可以使用
getTime()
函数对日期进行数学运算

let数据={
订单号:12346,
计划:“08/17/16 11:45”,
横向:“L1-8-1-T7,L1-8-1-T6”,
开始时间:“08/17/16 15:30”,
支票:“20.25”,
停止时间:“”,
状态:“正在运行”,
约为:25.00,
大约10小时:,
约为20.63英尺,
};
this.order_no=data[“order_no”]| |“”;
this.scheduled=数据[“scheduled”]| |“”;
this.lateral=数据[“lateral”]| |“”;
this.start_time=data[“start_time”]| |“”;
this.checks=数据[“checks”]| |“”;
this.stop_time=data[“stop_time”]| |“”;
this.status=data[“status”]| |“”;
this.approx_cfs=数据[“approx_cfs”]| |”;
this.approx_hrs=数据[“approx_hrs”]| |“;
this.approx_af=数据[“approx_af”]| |“;
this.calc=(!this.stop_time?((new Date().getTime()-new Date(this.start_time).getTime())/1000.0/60.0/60.0)*this.checks*0.0825:((new Date(this.stop_time).getTime()-new Date(this.start_time).getTime())/1000.0/60.0)*this.checks*0.0825);

console.log(calc);
问题是您试图将字符串类型值分配给类型为number的checks变量

开始时间:字符串;
支票:号码;
停止时间:字符串;

指定值:-

开始时间:“08/17/16 15:30”,
支票:“20.25”,

停止时间:'',

问题是您试图将字符串类型值分配给类型为number的checks变量

开始时间:字符串;
支票:号码;
停止时间:字符串;

指定值:-

开始时间:“08/17/16 15:30”,
支票:“20.25”,

停止时间:“,

此。checks
声明为字符串,您正在尝试对其他数据类型执行一些数学运算。这可能就是问题所在。尝试将其声明为数字。使用数字键入更新。
此。checks
声明为字符串,您正在尝试对其他数据执行一些数学运算类型。这可能就是问题所在。尝试将其声明为数字。使用数字键入进行更新。这是进度。我现在得到错误-->类型“{order\u no:string;scheduled:string;lateral:string;start\u time:string;checks:string;stop\u…”不可分配给类型“order[]”类型{order\u no:string;scheduled:string;lateral:string;start\u time:string;checks:string;stop\u…'不可分配给类型'order'。属性'checks'的类型不兼容。类型'string'不可分配给类型'number'。这是进度。我现在得到错误-->类型'{order_no:string;scheduled:string;lateral:string;start_time:string;checks:string;stop_…'不可分配给类型'order[]'{order_no:string;scheduled:string;lateral:string;start_time:string;checks:string;stop_…'不可分配给类型'order'。属性'checks'的类型不兼容。类型'string'不可分配给类型'number'。如果我将其更改为string
// mock-orders.ts
import { Order } from './order'

export const ORDERS: Order[] = [ 
    {order_no: '12345',
    scheduled: '08/16/16 13:45',
    lateral: 'L1-8-1-T7, L1-8-1-T6',
    start_time: '08/16/16 15:45',
    checks: '23.25',
    stop_time: '08/17/16 15:30', 
    status: 'Delivered',
    approx_cfs: '25.00',
    approx_hrs: '22',
    approx_af: '45.38',
    },

    {order_no: '12346',
    scheduled: '08/17/16 11:45',
    lateral: 'L1-8-1-T7, L1-8-1-T6',
    start_time: '08/17/16 15:30',
    checks: '20.25',
    stop_time: '', 
    status: 'Running',
    approx_cfs: '25.00',
    approx_hrs: '10',
    approx_af: '20.63',
    },

    {order_no: '12346',
    scheduled: '08/17/16 11:45',
    lateral: 'L1-8-1-T7, L1-8-1-T6',
    start_time: '08/17/16 15:30',
    checks: '20.25',
    stop_time: '', 
    status: 'Running',
    approx_cfs: '25.00',
    approx_hrs: '10',
    approx_af: '20.63',
    },

    {order_no: '12346',
    scheduled: '08/17/16 11:45',
    lateral: 'L1-8-1-T7, L1-8-1-T6',
    start_time: '08/17/16 15:30',
    checks: '20.25',
    stop_time: '', 
    status: 'Running',
    approx_cfs: '25.00',
    approx_hrs: '10',
    approx_af: '20.63',
    }
];