chaihongjun

chaihongjun 查看完整档案

海口编辑  |  填写毕业院校  |  填写所在公司/组织 chaihongjun.me 编辑
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 个人简介什么都没有

个人动态

chaihongjun 赞了回答 · 2020-12-10

解决typescript对象类型(函数)应该怎么定义?

当箭头函数需要声明返回类型的时候也是可以用 function 声明函数返回值的方式来声明的,可以规避掉类型定义中的 => 。一行中箭头冒号等号混在一起确实很难区分哪里是类型哪里是 ES 语句。
可以参考一下:

PlayGround

image.png

这两个基本是一个意思,但是前者利用 TS 自动推导 test 的类型,更加简洁明了,不推荐后者显式声明类型的方法,除非你把类型单独拎出来。

关注 3 回答 4

chaihongjun 赞了回答 · 2020-12-10

解决typescript对象类型(函数)应该怎么定义?

先分析TS变量声明并赋值语句

变量名称 : 类型  = 值

ts及js中都包括函数是一等公民,换而言之函数即可作值,亦可为类型
等号左侧为匿名函数类型 () => string (声明一个无入参出参为字符串的函数类型)
,右侧则为值类类型。

let jianXiaoJieJie: () => string = () => {
  return "大脚";
};

等价于

let jianXiaoJieJie: () => string;           // 声明函数类型变量 jianXiaoJieJie
jianXiaoJieJie = () => { return "大脚";};   // 给该变量赋值了一个确定的函数

而const 常量 需要保持地址不变性,所以用了一行初始化赋值语句

关注 3 回答 4

chaihongjun 赞了回答 · 2020-12-10

解决typescript对象类型(函数)应该怎么定义?

const 名称:类型 = 表达式;
() => string表示这是一个函数类型,这个函数是没有参数的,返回一个字符串,如果你确定函数只能返回某个具体的字符比如“大脚”那就是:() => '大脚'

关注 3 回答 4

chaihongjun 赞了回答 · 2020-12-10

解决typescript对象类型(函数)应该怎么定义?

包含声明和赋值两部分,你不要混到一起去看。

首先是声明:

// 伪代码,实际会报错,理解意思就行
let str: string;               // str 是一个 string 类型
let num: number;               // num 是一个 number 类型
let func1: Function;           // func1 是一个 Function 类型(不限制有没有入参、返回值是什么)
let func2: () => string;       // func2 是一个返回值是 string 的 Function 类型
let func3: (number) => string; // func3 是一个有一个 number 类型入参、返回值是 string 的 Function 类型

然后是赋值:

str = '';
num = 0;
func1 = () => {};
func2 = () => '';
func3 = (i) => i + '';

上面几个你把声明和赋值合起来,都是下面这样,你没有问题吧?

let str: string = '';
let num: number = 0;
let func1: Function = () => {};

如果没有问题,那为啥到了后面的你就认为有不同了呢?

let func2: () => string = () => '';
let func3: (number) => string = (i) => i + '';

关注 3 回答 4

chaihongjun 提出了问题 · 2020-12-10

解决typescript对象类型(函数)应该怎么定义?

正在跟着 https://jspang.com/detailed?i... 学习typescript.
看到这里:

我们还可以定义一个函数类型,并确定返回值。代码如下:
const jianXiaoJieJie: () => string = () => {
  return "大脚";
};

看到这个有点懵了。首先如果是函数定义我觉得是这样:

const jianXiaoJieJie:()=>{return "大脚";}

然后本身函数返回的是字符串,所以再改进成这样:

const jianXiaoJieJie:():string=>{return "大脚";}

实际上这样是报错的。所以,

const jianXiaoJieJie: () => string = () => {
  return "大脚";
};

这个怎么理解?

关注 3 回答 4

chaihongjun 回答了问题 · 2020-10-15

解决字符串模板字面量标签的标签函数参数问题

第一个参数模板参数和边界的间隔

看了那个帖子后面的解释,终于看明白了

关注 1 回答 2

chaihongjun 提出了问题 · 2020-10-14

解决字符串模板字面量标签的标签函数参数问题

《JavaScript高程》第四版关于字符串模板字面量标签那里的案例:

let a = 6;
let b = 9;
function simpleTag(strings, aValExpression, bValExpression, sumExpression) {
 console.log(strings);
 console.log(aValExpression);
 console.log(bValExpression);
 console.log(sumExpression);
 return 'foobar';
}
let untaggedResult = `${ a } + ${ b } = ${ a + b }`;
let taggedResult = simpleTag`${ a } + ${ b } = ${ a + b }`; 

在参考了文章 https://www.softwhy.com/artic... 之后我觉得console.log(strings);输出的结果和我预想的不一样,我
觉得输出的数组应该是[' ','+',' ','=',' ']
应该是5个元素,空格,加号,空格,等号,空格。
不知道是不是我理解的错误。

关注 1 回答 2

chaihongjun 回答了问题 · 2020-09-29

解决tp5 不能嵌套使用模板变量么?

啊,我自己是。。。。
模板调用应该是这样的:

{$Klass->getTeacher($Klass.teacher_id)}

最里面的{}不需要了.....

关注 1 回答 1

chaihongjun 提出了问题 · 2020-09-29

解决tp5 不能嵌套使用模板变量么?

新手学习tp5
有两个表
teacher:id name username
klass:id name teahcer_id

现在需要在模板页面循环输出klassd的内容,其中,希望把klass里面的teacher_id转换成teacher里面的name来显示。

正常情况下:
$klass->teahcer_id 返回的是id
如果想得到是teacher.name 必须再去查teacher

用klass的字段作为查询条件,放到teacher里面去查询name.
想到的是封装成一个函数:

public function getTeacher($teacher_id){
$teacher = TeacherModel::get($teacher_id);
return  $teacher->name; 
}

这个方法放哪里呢,因为在模板里面是循环输出klass的内容,

 {volist id="Klass" name="Klasses"}
 <tr>
 <td>{$i}</td>
 <td>{$Klass.id}</td>
 <td>{$Klass.name}</td>
 <td>{$Klass->getTeacher({$Klass.teacher_id})}</td>
 <td>
 <a
 type="button"
 class="btn btn-warning"
 href="{:url('delete?id='.$Klass->getData('id'))}"
 >删除</a>
 <a
 type="button"
 class="btn btn-info"
 href="{:url('edit?id='.$Klass->getData('id'))}"
 >编辑</a
 >
 </td>
 </tr>
 {/volist}
 </tbody>
 </table>
 {$Klasses->render()}

所以方法应该放在klass模型里面:

use app\index\model\Teacher as TeacherModel;
class Klass extends Model
{
 public function getTeacher($teacher_id)
 {
 $Klass = TeacherModel::get($teacher_id);
 return $Klass['name'];
 }
}

然后在模板内这样调用了:

{$Klass->getTeacher({$Klass.teacher_id})}

发现最后渲染的结果:
{$Klass->getTeacher(1)}
{$Klass->getTeacher(2)}
之类的。

关注 1 回答 1

chaihongjun 提出了问题 · 2020-07-24

如何在浏览器直接浏览markdown文件

nginx 的 mime.types 文件里配置了

types {
  ...
  text/markdown                         md;
  ...
}

并且重启了nginx,结果依然变成了下载md文件。怎么弄才可以在浏览器直接浏览MD文件而不转换成html?

关注 3 回答 3

认证与成就

  • 获得 15 次点赞
  • 获得 89 枚徽章 获得 3 枚金徽章, 获得 16 枚银徽章, 获得 70 枚铜徽章

擅长技能
编辑

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2016-10-27
个人主页被 1.1k 人浏览