javascript 如何在typescript中使用函数改变全局变量的值?

mlnl4t2r  于 2022-10-30  发布在  Java
关注(0)|答案(3)|浏览(301)

我正在尝试使用函数更改全局变量的值。
下面是我的js代码:

var name="Samir";
var status=true;

function func1 () {
    status=false;
    name="sunny"
}

func1();

console.log(name);
console.log(status);

这很好用,但是我很好奇如何使用typescript实现同样的功能。

ukdjmx9f

ukdjmx9f1#

declare global {
   name: string;
   status: boolean;
}
function func1 () {
    globalThis.status = false;
    globalThis.name = "sunny"
}
42fyovps

42fyovps2#

您的函数是一个构造很差的示例,它在JavaScript中有效,但在TypeScript中无效。
请在此处检查代码:TSPlayground
错误包括
1.无法重新声明块作用域变量'name'
1.后续的变数宣告必须具有相同的型别。变数'status'的型别必须是'string',但这里的型别是'boolean'。
1.类型'boolean'无法指派给类型'string'。
1.无法指派给'name',因为它是常数。
有效JS代码为,

let userName = "Samir";
let userStatus = true;

function func1 (userName, userStatus) {
    userStatus = userStatus;
    userName = userName;
}

func1("sunny", false);

console.log(userName);
console.log(userStatus);

任何有效的JavaScript都将通过TS编译器 ,因为TS是JS 的超集。
通过将函数签名更改为

function func1 (userName: string, status: boolean)
sshcrbum

sshcrbum3#

namestatus实际上是window属性。您所需要做的就是使用不同的名称,TS不会抱怨。
更新后的Playground

相关问题