不能将类型“number”分配给类型“string”
适用场景:
前端是
string
类型的数据例如
单选框的性别:“男” “女”
,需要在后端数据库以
int
类型的格式例如:“0”“1”的格式存储,
后端接收到对象中该属性为int类型
,故在前端
需要将string转换成int类型
解决方法:
async function revise() {
const lab = form1.value
if (form1.value.isRecruit === '否') {
lab.isRecruit = '0'
Number(lab.isRecruit)
else {
lab.isRecruit = '1'
Number(lab.isRecruit)
const response = await axios.post('/update/lab', lab)
if (response.data) {
ElMessage.success('修改成功')
else {
ElMessage.error('修改失败')
代码案例中的逻辑:
需要把lab对象(表单1)作为参数传给后端:axios.post('/update/lab', lab)
但是form1中的isRecruit属性的值为sting类型但是后端接受的对象需要是int,故需要修改
修改方式:
- 判断isRecruit属性的值
- 根据实际情况给它赋值string类型的数字
- Number()函数转换
在使用angular写一些东西的时候,需要用到parseInt()方法来将时间戳转换成时分秒(xx时-xx分-xx秒)的格式,但是因为angular所使用的是Typescript,而
parseInt(string:string,radix?:number):number
在parseInt中传的第一个参数是string类型,所以使用parseInt会报错
类型“number”的参数不能赋给类型“string”的参数。
我找了半天,想了好长时间终于在自己想出来解决办法后,找到了。。。
元组可以看做是数组的拓展,它表示已知元素数量和类型的数组。可以看到,上面我们定义了一个元组 tuple,它包含三个元素,且每个元素的类型是固定的。当我们为 tuple 赋值 时:各个位置上的元素类型都要对应,元素个数也要一致。这里我们给元组 tuple 的索引为 1 即第二个元素赋值为 3,第二个元素类型为 number,我们赋值给 3,所以没有问题。上面的例子中,我们访问的 tuple 的第二个元素的元素类型为 number,而数值没有 split 方法,所以会报错。
System.out.println(s1==s2);//true
String s3=new String("jiang");
String s4=new String("jiang");
System.out.println(...
当属性在interface定义时,在后面添加了“?”,将此属性定义为了可选属性,为某个属性赋值时,就可能会出现 不能将类型“string | undefined”分配给类型“string” 的报错。将问号去掉 用string|null|undefined来表示属性可能出现不同值,用as any 达成兼容效果,问题解决。
检查当前属性是否在interface定义时,在后面添加了“?”,将此属性定义为了可选属性,解决报错可将此属性定位固定属性将问号去掉。确信这个字段100%出现,可以在属性后面添加感叹号“!”,强调这个字段一定存在,也可以解决报错。
使用 get() set() 定义计算属性时,出现 '不能将类型“WritableComputedRef”分配给类型“string” ts(2322)' 或 "error TS2322: Type 'WritableComputedRef' is not assignable to type 'string'" 错误解决方法